gpt4 book ai didi

objective-c - 保留/释放返回对象

转载 作者:太空狗 更新时间:2023-10-30 03:40:08 27 4
gpt4 key购买 nike

我是 Objective-C 的新手,所以这可能是个愚蠢的问题。

我不禁看到 ObjC 和微软的 COM 在内存管理方面的相似之处(AddRef/Release vs retain/发布)。在 COM 环境中,或多或少地要求您在将对象返回给调用者之前始终AddRef(保留)。从我目前所见(我是 Cocoa® Programming for Mac® OS X (3rd Edition) 的三分之一)来看,内存管理部分有些模糊。

假设没有 GC,返回对象的惯用方式是什么?

最佳答案

阅读Memory Management Programming Guide关于自动释放池。

在 Objective-C 中,按照惯例,对象应该以自动释放的方式返回(除非返回对象的方法的名称以“alloc”、“new”、“copy”或“mutableCopy”开头)。自动释放的对象由池中的 Objective-C 跟踪并自动处理,这意味着您无需关心向它们发送最终版本。与 COM 相比,这极大​​地简化了引用计数,这就是为什么大多数时候您看不到对返回对象的任何 release 调用。相反,相同的约定指定名称以 alloc、new、copy 或 mutableCopy 开头的方法返回的所有对象均由方法调用者负责。您必须手动调用这些对象的释放,否则您的程序将发生内存泄漏。

关于objective-c - 保留/释放返回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7076247/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com