在标准的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的建议方法是什么?
答案 0 :(得分:19)
要使用ARC,您只需删除retain
和release
消息就可以了。所以你摆脱了这样的数组:
imageArray = nil;
这有效并且不会泄漏,因为在ARC下编译器会自动插入必要的retain
和release
来电。
答案 1 :(得分:12)
如果imageArray是对象的ivar(可能不是一个安全的假设),你应该使用一个访问器将数组设置为nil;访问器将负责释放阵列及其所有成员:
[self setImageArray:nil];
如果您需要清理一个包含许多成员的数组,但在该ivar中保留一个有效的数组,以便其他方法可以安全地发送消息,您可以使用以下命令:
[self setImageArray:[[NSArray alloc] init]];
将使用新的空数组替换旧数组。