自动释放后的NSArray复制



我很好奇如果我有这样的代码会发生什么。

NSArray* myArray = [NSArray alloc]initWithObjects:@"a", @"b", @"c", nil];
[myArray autorelease];
myArray = [otherArray copy];

autorelease将标记当前事件循环结束时释放的内存。

这是否意味着在事件循环结束时释放[otherArray copy] ?

No。当自动释放对象时,对象被添加到自动释放池中,而不是指向这些对象的指针。你在自动释放一个数组,如果你复制另一个数组到那个指针,它不会受到影响。你应该使用ARC,而不是auto/release。

最新更新