我将PESGraph弧库添加到没有弧的项目中。
我已经找到了答案,这是可能的,它确实有效。但是如何在非弧项目中处理来自弧库的对象的内存。我的意思是至少分配,保留,释放。
例如,如果声明为retain属性,我是否可以使用dealloc方法为arc中的对象写入release?
答案 0 :(得分:2)
如果在禁用ARC的情况下编译文件,您可以在该文件中调用release
(以及retain
和autorelease
),并且您有责任在适当的位置拨打这些电话
ARC的想法是,当启用ARC时,编译器会为您插入这些调用。如果您为某些文件禁用了ARC,那么在这些文件中您必须自己插入呼叫。
如果禁用ARC,Cocoa在您需要retain
,release
和autorelease
对象时具有非常强大的约定。阅读Cocoa Core Competencies: Memory Management即可开始使用。如果您需要更多详细信息,请查看Advanced Memory Management Programming Guide。它并不是非常先进。
启用ARC时,编译器遵循相同的约定。这就是为什么您可以在同一个可执行文件中链接启用ARC的文件和ARC禁用的文件。
答案 1 :(得分:0)
Cocoa中的内存管理完全是本地的 - 需要在函数中执行的内存管理操作只能通过查看该函数来确定,而无需关心其他代码。每个功能都可以在内存管理方面独立考虑,只要它们都遵循规则。 ARC只是自动实现规则(您将在MRC中遵循的规则)。代码的不同部分可以独立使用ARC或MRC,而不会相互影响。