在自动引用计数下,为什么不允许保留,释放和释放?

Jea*_*ean 39 objective-c automatic-ref-counting

当尝试使用-retain,-release-dealloc在使用Xcode 4.2中的自动引用计数构建我的应用程序时,我收到如下错误:

自动引用计数禁止'dealloc'的显式消息发送

为什么我看到这个错误?在自动引用计数下是否-retain,-release并且-dealloc不再允许这样做?

Dav*_*ong 67

基本上:

使用ARC时,它是全有或全无.编译器是为您管理所有retainins/release/deallocs,或者它什么都不做.你不能穿插自己的调用,因为编译器希望自己完成所有操作.它可以通过执行此操作进行荒谬的优化(例如,在手动内存管理下返回自动释放对象的方法现在可能会生成一个永远不会在自动释放池中结束的对象).如果你开始使用自己的调用来保留和释放,那么编译器必须使用这些并且无法执行它想要的许多优化(并且你应该想要).

作为额外的奖励,调用-retainCount现在是一个编译器错误!OH HAPPY DAY!

  • Thx Dave的精确度...但是那么外部代码(有时被误用语言错误地称为"框架/库",但更多的是"未编译的代码包"),比如,ASIHTTPRequest,Reachability.h/.m等?(这就是我实际想的) (4认同)