-2

可能重复:
[NSMutableArray array] 与 [[NSMutableArray alloc] init] 之间的区别

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

有什么区别?

4

4 回答 4

3

您不需要释放test(因为您没有分配它),但您确实需要释放test1(因为您分配它)(假设不涉及 ARC)。

该方法[NSMutableArray array]已经返回一个autoreleaseed 数组。

于 2012-05-18T07:35:49.060 回答
0

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

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

于 2012-05-18T07:38:12.817 回答
0

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

于 2012-05-18T07:41:27.743 回答
0

两个语句之间的关系:

[NSMutableArray array] equivalent to  [[[NSMutableArray alloc] init] autorelease];
于 2012-05-18T07:42:41.927 回答