[英]objective-C. Arc library in non-arc
我将PESGraph弧库添加到没有弧的项目中。
我已经找到了答案,它是可能的,它确实有效。 但是如何在非弧项目中处理来自弧库的对象的内存。 我的意思是至少分配,保留,释放。
例如,如果声明为retain属性,我可以在aralloc方法中为对象写入arc吗?
如果在禁用ARC的情况下编译文件,则可以在该文件中调用release
(和retain
and autorelease
),并且您负责在适当的位置进行这些调用。
ARC的想法是,当启用ARC时,编译器会为您插入这些调用。 如果您为某些文件禁用了ARC,则必须在这些文件中自行插入呼叫。
如果禁用ARC,则需要retain
, release
和autorelease
对象时,Cocoa具有非常强的约定。 阅读Cocoa核心能力:内存管理入门。 如果您需要更多详细信息,请查看高级内存管理编程指南 。 它并不是非常先进。
启用ARC时,编译器遵循相同的约定。 这就是为什么您可以在同一个可执行文件中链接启用ARC的文件和ARC禁用的文件。
Cocoa中的内存管理是完全本地的 - 需要在函数中执行的内存管理操作只能通过查看该函数来确定,而无需关心其他代码。 每个功能都可以在内存管理方面独立考虑,只要它们都遵循规则。 ARC只是自动实现规则(您将在MRC中遵循的规则)。 代码的不同部分可以独立使用ARC或MRC,而不会相互影响。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.