这两个声明有什么区别?

时间:2012-05-18 07:33:49

标签: objective-c ios cocoa-touch

  

可能重复:
  Difference between [NSMutableArray array] vs [[NSMutableArray alloc] init]

NSMutableArray* test = [NSMutableArray array];
NSMutableArray* test1 =[[NSMutableArray alloc]init];

有什么区别?

4 个答案:

答案 0 :(得分:3)

您不需要释放test(因为您没有分配它),但您需要释放test1(当您分配它时)(假设不涉及ARC)。< / p>

方法[NSMutableArray array]已经返回autorelease ed数组。

答案 1 :(得分:0)

test已自动释放。这意味着它已被添加到当前自动释放池中,并且当池耗尽时(通常,当前运行循环结束时),它将被发送一个释放消息。如果没有其他人发送保留,则可以在此时释放内存。

test1不是,并且有效保留计数为+1。你有责任释放,否则你会泄漏记忆。

答案 2 :(得分:0)

第一个是NSMUtableArray类的静态方法,它返回一个初始化和自动重新排列的数组。 在第二个语句中,您手动分配和初始化

答案 3 :(得分:0)

两个陈述之间的关系:

[NSMutableArray array] equivalent to  [[[NSMutableArray alloc] init] autorelease];