繁体   English   中英

客观-C。 非弧的弧库

[英]objective-C. Arc library in non-arc

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

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

例如,如果声明为retain属性,我可以在aralloc方法中为对象写入arc吗?

如果在禁用ARC的情况下编译文件,则可以在该文件中调用release (和retain and autorelease ),并且您负责在适当的位置进行这些调用。

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

如果禁用ARC,则需要retainreleaseautorelease对象时,Cocoa具有非常强的约定。 阅读Cocoa核心能力:内存管理入门。 如果您需要更多详细信息,请查看高级内存管理编程指南 它并不是非常先进。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM