我正在开发一个IOS应用程序。如何从NSArray列表中获取对象。避免出现内存错误的最佳方法是什么?你能告诉我正确的方法吗?感谢
Person *person = [[[Person alloc] init] autorelease];
person = [self.userFavourites objectAtIndex:0];
Person *person = [self.userFavourites objectAtIndex:0];
[person retain];
//Make the required action
[person release];
答案 0 :(得分:5)
Person *person = [self.userFavourites objectAtIndex:0];
userFavourites
数组保留了内部的所有元素,当你获得一个元素时,它会自动释放。
编辑:
建议1 - 分配init自动释放 Person 对象然后从阵列中获取不同的人是没有意义的。
建议2 - 您不需要保留对象,因为数组会保留它。如果您需要在范围之外,您只需要保留它
答案 1 :(得分:2)
建议3:
使用ARC和现代objective-c,因此您可以编写更少的代码:
Person *person = self.userFavourites[0];
答案 2 :(得分:1)
为什么不使用ARC?它让你的生活更轻松......
但是,我会使用建议1,因为autorelease知道如何处理对象,并且它不应该给出内存错误。
还有其他帮助?