我有一个使用 MRC(非 ARC)静态库的启用 ARC 的应用程序。在静态库中,retain
/release
被覆盖以提供一些自定义的弱引用/缓存行为([super retain/release]
当然被称为)。问题是,由于retain
/release
在启用 ARC 的代码中不允许使用,是否可以在启用 ARC 的代码中使用覆盖retain
/release
的类?目前它似乎运行良好,但我不确定这是否依赖于将来可能会中断的未定义行为。
还有什么是禁止覆盖retain
/的原因release
?是不是因为编译器做了一些特殊的优化,绕过了消息绑定过程来加快方法调用?我知道_objc_storeStrong
调用是由执行引用计数的编译器生成的,那么这是否意味着不能保证在 ARC 下调用覆盖的retain
/ ?release