libextobjc 0.6

libextobjc 0.6

测试已测试
Lang语言 Obj-CObjective C
许可证 NOASSERTION
发布最新发布2018年11月

Justin Spahr-SummersRobert Böhnke 维护。



  • 作者:
  • Justin Spahr-Summers

Extended Objective-C 库扩展了 Objective-C 编程语言的动力,以支持其他编程语言中存在的某些模式(包括那些不是必要面向对象的模式)。

libextobjc 意在非常模块化 - 其中的大多数类和模块都可以无需更多的依赖项即可使用。

功能

libextobjc 目前包含以下功能

  • 安全的分类,使用 EXTSafeCategory,在不覆盖任何已有内容的情况下向类中添加方法(为您识别冲突)。
  • 具体协议,使用 EXTConcreteProtocol,为协议中的方法提供默认实现。
  • 更简单、更安全的键路径,使用 EXTKeyPathCoding,它在编译时自动检查键路径。
  • 使用 EXTSelectorChecking 验证选择器,以确保对象声明了一个给定的选择器。
  • 在块中使用弱变量的便利性,使用来自 EXTScope 模块的 @weakify@unsafeify@strongify
  • 基于作用域的资源清理,使用 EXTScope 模块中的 @onExit,在作用域结束时自动清理手动分配的内存、文件句柄、锁等。
  • 使用 EXTADT 完全在编译时生成的代数数据类型
  • 为分类生成合成属性,使用 EXTSynthesize。
  • 基于块的协程,使用 EXTCoroutine。
  • EXTNil,类似于 NSNull,但其行为与实际的 nil 更加紧密(即,发送未识别的消息时不会崩溃)。
  • 许多扩展和额外的功能,构建在 <objc/runtime.h> 之上,包括极其可定制的查找方法和反射对象属性,以及各种扩展类层次结构检查和查找的方法。

实验 分支包含了一些可能很有趣但不是用于生产环境的附加功能。检查头文件以获取更多信息。

运行测试

要执行 libextobjc 的测试,首先运行 git submodule update --init --recursive 以拉取 xcconfigs 子模块,然后打开项目文件并选择所需的测试目标。

添加到项目中

如果您想将 libextobjc 作为依赖添加到 应用程序 中,请将其作为 子模块 添加,然后在您的 Xcode 项目中包含您关心的源文件。

如果您想将 libextobjc 作为依赖添加到 框架或库 中,建议使用 子树合并,这允许您重命名符号以避免冲突,并对您的库进行任何必要的调整。

要创建 libextobjc 子树

$ git remote add libextobjc https://github.com/jspahrsummers/libextobjc.git
$ git fetch libextobjc
$ git read-tree --prefix=External/ -u libextobjc/master
$ git reset

重命名任何符号或更改您想要的任何内容,使用 git add 添加您库中希望包含的特定文件,然后将它们添加到您的 Xcode 项目中。

要后续引入上游变更

$ git fetch -p libextobjc
$ git merge -Xsubtree=External/ libextobjc/master
$ git reset

然后,再次只添加您想要的变更。

许可

在 MIT 许可下发布。有关更多信息,请参阅 LICENSE 文件。

要求

libextobjc 必须启用 ARC 来构建,并且很多宏也需要在调用文件中开启 ARC。不支持 MRR 使用。