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