我是 Objective-C 的新手,所以这可能是一个愚蠢的问题。
我不禁看到 ObjC 和 Microsoft 的 COM 在内存管理方面的相似之处(AddRef
/Release
vs retain
/release
)。在 COM 环境中,或多或少地要求您始终AddRef
(retain
) 一个对象,然后将其返回给调用者。从我到目前为止所看到的(我是第三个)Mac® OS X 的 Cocoa® 编程(第三版) https://rads.stackoverflow.com/amzn/click/com/0321503619),内存管理部分有些模糊。
假设没有 GC,返回对象的惯用方式是什么?
Read 内存管理编程指南 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/MemoryMgmt.html关于自动释放池。
在 Objective-C 中,按照惯例,对象应该以自动释放的方式返回(除非返回对象的方法的名称以“alloc”、“new”、“copy”或“mutableCopy”开头)。自动释放的对象由 Objective-C 在池中跟踪并自动处理,这意味着您无需关心向它们发送最终版本。与 COM 相比,这大大简化了引用计数,这就是为什么您看不到任何release
大多数时候调用返回的对象。相反,同一约定指定名称以 alloc、new、copy 或 mutableCopy 开头的方法返回的所有对象都是方法调用者的责任。您必须手动调用这些对象的release,否则您的程序将出现内存泄漏。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)