【问题标题】:After using an NSArray *sort* method, am I responsible for releasing the returned array使用 NSArray *sort* 方法后,我是否负责释放返回的数组
【发布时间】:2010-02-11 00:29:25
【问题描述】:

我习惯于 c 编程,我负责释放所有东西,而这个客观的 c 时髦的东西在工作中扔了一些扳手。我正在使用下面的代码。

NSArray *b = [a allObjects];
NSArray *c = [b sortedArrayUsingDescriptors:sortDescriptors];

谁负责释放“b”和“c”。为了记录,“a”是一个 NSSet。如果我手动释放它们,它似乎会使应用程序崩溃,但我不是 100% 确定,所以我想我问一下。

谢谢。

【问题讨论】:

    标签: iphone objective-c sorting nsarray


    【解决方案1】:

    这两个调用都返回自动释放的对象,因此您很安全。它们将为您释放(例如在未来的某个时间,例如在当前运行循环结束时)。

    一般规则是,如果您没有显式调用 retainalloc 或对象的 copy 方法之一,那么无论您调用什么方法,都会返回一个自动释放的对象。

    这是memory management documentation的链接。

    【讨论】:

    • 卡尔的好回答。一个更正:即使allocinit 通常同时出现,alloc 是返回您拥有的对象的实际方法,并且必须稍后释放或自动释放。返回您拥有的对象的第三类方法是包含 copy 的方法。
    猜你喜欢
    • 2011-06-21
    • 2013-07-14
    • 1970-01-01
    • 2018-10-10
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多