我有一个使用MRC(非ARC)静态库的启用ARC的应用程序。在静态库中,retain
/release
被覆盖以提供一些自定义的弱引用/缓存行为(当然称为[super retain/release]
)。问题是由于retain
/release
在启用ARC的代码中不允许,可以使用在启用ARC的代码中覆盖retain
/release
的类吗?目前它似乎运行良好,但我不确定这是否依赖未定的行为,这可能会在未来破裂。覆盖保留/释放在ARC
还有什么理由禁止优先retain
/release
?是否因为编译器做了一些特殊的优化,绕过了消息绑定过程来加速方法调用?我知道_objc_storeStrong
调用是由引用计数的编译器生成的,那么这是否意味着重写的retain
/release
不能保证在ARC下调用?
ARC只是自行维护内存管理,即以简单的语言根据对象的范围自动放入保留/释放代码。所以,只要不担心图书馆不启用ARC,它将不会在将来创建任何问题。 – 2013-05-07 11:54:57