首页
/ libextobjc 技术文档

libextobjc 技术文档

2024-12-24 09:43:29作者:齐添朝

1. 安装指南

1.1 添加到应用程序项目

要将 libextobjc 作为依赖项添加到应用程序项目中,请按照以下步骤操作:

  1. libextobjc 仓库作为子模块添加到您的项目中:
    git submodule add https://github.com/jspahrsummers/libextobjc.git
    
  2. 在 Xcode 项目中包含您需要的源文件。

1.2 添加到框架或库项目

如果您希望将 libextobjc 作为依赖项添加到框架或库项目中,建议使用子树合并(subtree merging):

  1. 添加远程仓库:
    git remote add libextobjc https://github.com/jspahrsummers/libextobjc.git
    
  2. 获取远程仓库:
    git fetch libextobjc
    
  3. 创建子树:
    git read-tree --prefix=External/ -u libextobjc/master
    git reset
    
  4. 重命名符号或根据需要进行更改,然后将要包含的文件添加到您的库中。

1.3 更新子树

要更新子树以包含上游更改,请执行以下操作:

  1. 获取最新的远程更改:
    git fetch -p libextobjc
    
  2. 合并更改:
    git merge -Xsubtree=External/ libextobjc/master
    git reset
    
  3. 添加您需要的更改。

2. 项目的使用说明

libextobjc 是一个扩展 Objective-C 编程语言动态性的库,支持其他编程语言中的额外模式(包括那些不一定是面向对象的)。该库非常模块化,大多数类和模块都可以在没有多个依赖项的情况下使用。

2.1 主要功能

  • 安全类别:使用 EXTSafeCategory 添加方法到类中,而不会覆盖任何已存在的方法。
  • 具体协议:使用 EXTConcreteProtocol 为协议中的方法提供默认实现。
  • 简单且安全的键路径:使用 EXTKeyPathCoding 在编译时自动检查键路径。
  • 编译时检查选择器:使用 EXTSelectorChecking 确保对象声明了给定的选择器。
  • 块中弱变量的更易用:使用 @weakify@unsafeify@strongify 简化块中弱变量的使用。
  • 基于作用域的资源清理:使用 @onExit 在作用域结束时自动清理手动分配的内存、文件句柄、锁等。
  • 代数数据类型:使用 EXTADT 在编译时生成完全的代数数据类型。
  • 类别属性合成:使用 EXTSynthesize 为类别合成属性。
  • 基于块的协程:使用 EXTCoroutine 实现基于块的协程。
  • EXTNil:类似于 NSNull,但行为更接近实际的 nil

2.2 实验性功能

实验性分支包含一些可能有趣但尚未被认为是稳定或适合生产使用的功能。请查看头文件以获取更多信息。

3. 项目API使用文档

3.1 EXTSafeCategory

EXTSafeCategory 允许您安全地向类中添加方法,而不会覆盖任何已存在的方法。它会自动检测冲突。

3.2 EXTConcreteProtocol

EXTConcreteProtocol 为协议中的方法提供默认实现,使得实现协议的类可以选择性地覆盖这些方法。

3.3 EXTKeyPathCoding

EXTKeyPathCoding 在编译时自动检查键路径,确保键路径的有效性。

3.4 EXTSelectorChecking

EXTSelectorChecking 在编译时检查选择器,确保对象声明了给定的选择器。

3.5 EXTScope

EXTScope 模块提供了 @weakify@unsafeify@strongify@onExit 等宏,用于简化块中弱变量的使用和作用域结束时的资源清理。

3.6 EXTADT

EXTADT 在编译时生成代数数据类型,支持复杂的模式匹配。

3.7 EXTSynthesize

EXTSynthesize 为类别合成属性,使得类别可以拥有自己的属性。

3.8 EXTCoroutine

EXTCoroutine 实现基于块的协程,允许您以同步的方式编写异步代码。

3.9 EXTNil

EXTNil 类似于 NSNull,但行为更接近实际的 nil,不会在发送未识别消息时崩溃。

4. 项目安装方式

4.1 使用子模块

对于应用程序项目,建议使用子模块方式将 libextobjc 添加到项目中。

4.2 使用子树合并

对于框架或库项目,建议使用子树合并方式将 libextobjc 添加到项目中,以便重命名符号并进行必要的调整。

4.3 更新依赖

通过获取远程更改并合并到本地子树中,可以轻松更新 libextobjc 依赖。


通过以上文档,您应该能够顺利安装和使用 libextobjc 库,并了解其主要功能和 API 的使用方法。

热门项目推荐
相关项目推荐

项目优选

收起
MateChatMateChat
前端智能化场景解决方案UI库,轻松构建你的AI应用,我们将持续完善更新,欢迎你的使用与建议。 官网地址:https://matechat.gitcode.com
116
9
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
185
43
open-eBackupopen-eBackup
open-eBackup是一款开源备份软件,采用集群高扩展架构,通过应用备份通用框架、并行备份等技术,为主流数据库、虚拟化、文件系统、大数据等应用提供E2E的数据备份、恢复等能力,帮助用户实现关键数据高效保护。
HTML
84
55
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
261
66
mybatis-plusmybatis-plus
mybatis 增强工具包,简化 CRUD 操作。 文档 http://baomidou.com 低代码组件库 http://aizuda.com
Java
38
2
RuoYi-Cloud-Vue3RuoYi-Cloud-Vue3
🎉 基于Spring Boot、Spring Cloud & Alibaba、Vue3 & Vite、Element Plus的分布式前后端分离微服务架构权限管理系统
Vue
31
22
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
52
40
FlyFlow-flowable工作流FlyFlow-flowable工作流
类钉钉飞书样式,包含前后端代码、基于flowable的开箱即用的低代码开源专业工作流引擎
Java
12
2
anqicmsanqicms
AnQiCMS 是一款基于Go语言开发,具备高安全性、高性能和易扩展性的企业级内容管理系统。它支持多站点、多语言管理,能够满足全球化跨境运营需求。AnQiCMS 提供灵活的内容发布和模板管理功能,同时,系统内置丰富的利于SEO操作的功能,帮助企业简化运营和内容管理流程。AnQiCMS 将成为您建站的理想选择,在不断变化的市场中保持竞争力。
Go
89
7