libextobjc 技术文档
1. 安装指南
1.1 添加到应用程序项目
要将 libextobjc 作为依赖项添加到应用程序项目中,请按照以下步骤操作:
- 将
libextobjc仓库作为子模块添加到您的项目中:git submodule add https://github.com/jspahrsummers/libextobjc.git - 在 Xcode 项目中包含您需要的源文件。
1.2 添加到框架或库项目
如果您希望将 libextobjc 作为依赖项添加到框架或库项目中,建议使用子树合并(subtree merging):
- 添加远程仓库:
git remote add libextobjc https://github.com/jspahrsummers/libextobjc.git - 获取远程仓库:
git fetch libextobjc - 创建子树:
git read-tree --prefix=External/ -u libextobjc/master git reset - 重命名符号或根据需要进行更改,然后将要包含的文件添加到您的库中。
1.3 更新子树
要更新子树以包含上游更改,请执行以下操作:
- 获取最新的远程更改:
git fetch -p libextobjc - 合并更改:
git merge -Xsubtree=External/ libextobjc/master git reset - 添加您需要的更改。
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 的使用方法。
AutoGLM-Phone-9BAutoGLM-Phone-9B是基于AutoGLM构建的移动智能助手框架,依托多模态感知理解手机屏幕并执行自动化操作。Jinja00
Kimi-K2-ThinkingKimi K2 Thinking 是最新、性能最强的开源思维模型。从 Kimi K2 开始,我们将其打造为能够逐步推理并动态调用工具的思维智能体。通过显著提升多步推理深度,并在 200–300 次连续调用中保持稳定的工具使用能力,它在 Humanity's Last Exam (HLE)、BrowseComp 等基准测试中树立了新的技术标杆。同时,K2 Thinking 是原生 INT4 量化模型,具备 256k 上下文窗口,实现了推理延迟和 GPU 内存占用的无损降低。Python00
GLM-4.6V-FP8GLM-4.6V-FP8是GLM-V系列开源模型,支持128K上下文窗口,融合原生多模态函数调用能力,实现从视觉感知到执行的闭环。具备文档理解、图文生成、前端重构等功能,适用于云集群与本地部署,在同类参数规模中视觉理解性能领先。Jinja00
HunyuanOCRHunyuanOCR 是基于混元原生多模态架构打造的领先端到端 OCR 专家级视觉语言模型。它采用仅 10 亿参数的轻量化设计,在业界多项基准测试中取得了当前最佳性能。该模型不仅精通复杂多语言文档解析,还在文本检测与识别、开放域信息抽取、视频字幕提取及图片翻译等实际应用场景中表现卓越。00
GLM-ASR-Nano-2512GLM-ASR-Nano-2512 是一款稳健的开源语音识别模型,参数规模为 15 亿。该模型专为应对真实场景的复杂性而设计,在保持紧凑体量的同时,多项基准测试表现优于 OpenAI Whisper V3。Python00
GLM-TTSGLM-TTS 是一款基于大语言模型的高质量文本转语音(TTS)合成系统,支持零样本语音克隆和流式推理。该系统采用两阶段架构,结合了用于语音 token 生成的大语言模型(LLM)和用于波形合成的流匹配(Flow Matching)模型。 通过引入多奖励强化学习框架,GLM-TTS 显著提升了合成语音的表现力,相比传统 TTS 系统实现了更自然的情感控制。Python00
Spark-Formalizer-X1-7BSpark-Formalizer 是由科大讯飞团队开发的专用大型语言模型,专注于数学自动形式化任务。该模型擅长将自然语言数学问题转化为精确的 Lean4 形式化语句,在形式化语句生成方面达到了业界领先水平。Python00