在标准的Objective-C手动内存管理下,在this question中建议使用以下方法初始化释放NSArray的方法:

imageArray  = [[NSArray alloc] initWithObjects:[UIImage imageNamed:@"1.png"],
                        [UIImage imageNamed:@"2.png"],
                        nil];

被用来
[imageArray release];
imageArray = nil;

鉴于我们不再可以在自动引用计数下使用-release,在ARC下释放此NSArray的建议方法是什么?

最佳答案

如果imageArray是对象的ivar(也许不是安全的假设),则应使用访问器将数组设置为nil;否则,数组为null。访问器将负责释放数组及其所有成员:
[self setImageArray:nil];
如果您需要清理包含多个成员的数组,但要在该ivar中准备好有效的数组,以便其他方法可以安全地向其发送消息,则可以使用以下命令:
[self setImageArray:[[NSArray alloc] init]];
它将用新的空数组替换旧的数组。

09-06 19:54