使用NSArray*sort*方法后,我负责释放返回的数组

0xf*_*ded 2 sorting iphone objective-c nsarray

我习惯于编程,我负责释放所有东西,这个目标c时髦的东西是在工作中抛出一些扳手.我使用以下代码.

NSArray *b = [a allObjects];
NSArray *c = [b sortedArrayUsingDescriptors:sortDescriptors];
Run Code Online (Sandbox Code Playgroud)

谁负责释放"b"和"c".对于记录,"a"是NSSet.如果我手动释放它们似乎会使应用程序崩溃,但我不是百分百肯定所以我想我会问.

谢谢.

Car*_*rum 10

这两个调用都返回自动释放的对象,因此您是安全的.它们将被释放给你(例如将来某个时候,在当前运行循环结束时).

一般规则是,如果您没有显式调用retain,alloc或者其中一个对象的copy方法,则从您调用的任何方法中获取一个自动释放的对象.

这是内存管理文档的链接.

  • 卡尔给出了答案.一个更正:即使`alloc`和`init`通常一起出现,`alloc`是返回你拥有的对象的实际方法,必须在以后释放或自动释放.返回您拥有的对象的第三个方法系列是包含`copy`的方法. (2认同)