MAZeroingWeakRef 1.0

MAZeroingWeakRef 1.0

测试已测试
语言语言 Obj-CObjective C
许可证 BSD
发布最新发布2014年12月

未声明 维护。



  • Mike Ash

MAZeroingWeakRef - 由 Mike Ash 制作 - [email protected]

简介

MAZeroingWeakRef 是一个用于在 retain/release Cocoa 和 Cocoa Touch 代码中使用零引用弱引用的库。这些引用不会使对象 alive,当对象销毁时自动变为 nil。

MAZeroingWeakRef 在 Cocoa 垃圾回收下无法工作。对于这一点,已经存在内置的 __weak 指示符,尽管它的使用方式略有不同。

API 简单,主要可以从头文件中自我解释。请注意,清理块仅在高级使用中需要,需要执行比简单设置引用为 nil 时更多的操作。请务必注意头文件中关于不要在清理块中执行太多工作的警告。

为了允许对 CoreFoundation 桥接对象使用弱引用,必须对大量私有 API 进行疯狂的功能性黑客。对于不喜欢那种类型的人,或者担心为 iOS 构建时会被拒绝的人,可以减少或完全禁用这种疯狂的黑客行为。查看 MAZeroingWeakRef.m 中的 COREFOUNDATION_HACK_LEVEL 宏及其上面的注释,描述了不同级别的作用。

还有一个类似的 KVO_HACK_LEVEL 宏。

App Store

对于 iOS 工作或 Mac App Store 工作而言,你可能希望将 COREFOUNDATION_HACK_LEVEL 和 KVO_HACK_LEVEL 都设置为 0。在此模式下,MAZeroingWeakRef 不使用任何私有 API。

此外,如果你的应用需要运行在 iOS 3.x 上,您需要将基于块的代码设置 USE_BLOCKS_BASED_LOCKING 禁用为 0

源代码

MAZeroingWeakRef 代码可以从 GitHub 获取。

http://github.com/mikeash/MAZeroingWeakRef

MAZeroingWeakRef 在 BSD 许可证下提供。

更多信息

有关更多信息,这篇博客文章给出了对该 API 的基本介绍

http://mikeash.com/pyblog/introducing-mazeroingweakref.html

这描述了它如何在大多数情况下工作

http://mikeash.com/pyblog/friday-qa-2010-07-16-zeroing-weak-references-in-objective-c.html

这描述了某些较为复杂的部分

http://mikeash.com/pyblog/friday-qa-2010-07-30-zeroing-weak-references-to-corefoundation-objects.html

享受乐趣!