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