客观-C。非弧的弧库

时间:2014-01-04 09:22:55

标签: ios objective-c automatic-ref-counting release retain

我将PESGraph弧库添加到没有弧的项目中。

我已经找到了答案,这是可能的,它确实有效。但是如何在非弧项目中处理来自弧库的对象的内存。我的意思是至少分配,保留,释放。

例如,如果声明为retain属性,我是否可以使用dealloc方法为arc中的对象写入release?

2 个答案:

答案 0 :(得分:2)

如果在禁用ARC的情况下编译文件,您可以在该文件中调用release(以及retainautorelease),并且您有责任在适当的位置拨打这些电话

ARC的想法是,当启用ARC时,编译器会为您插入这些调用。如果您为某些文件禁用了ARC,那么在这些文件中您必须自己插入呼叫。

如果禁用ARC,Cocoa在您需要retainreleaseautorelease对象时具有非常强大的约定。阅读Cocoa Core Competencies: Memory Management即可开始使用。如果您需要更多详细信息,请查看Advanced Memory Management Programming Guide。它并不是非常先进。

启用ARC时,编译器遵循相同的约定。这就是为什么您可以在同一个可执行文件中链接启用ARC的文件和ARC禁用的文件。

答案 1 :(得分:0)

Cocoa中的内存管理完全是本地的 - 需要在函数中执行的内存管理操作只能通过查看该函数来确定,而无需关心其他代码。每个功能都可以在内存管理方面独立考虑,只要它们都遵循规则。 ARC只是自动实现规则(您将在MRC中遵循的规则)。代码的不同部分可以独立使用ARC或MRC,而不会相互影响。