IOS从NSArray获取对象

时间:2013-11-20 10:15:13

标签: ios objective-c memory-management nsarray

我正在开发一个IOS应用程序。如何从NSArray列表中获取对象。避免出现内存错误的最佳方法是什么?你能告诉我正确的方法吗?感谢

建议1

Person *person = [[[Person alloc] init] autorelease];
        person = [self.userFavourites objectAtIndex:0];

建议2

Person *person = [self.userFavourites objectAtIndex:0];
[person retain];

//Make the required action

[person release];

建议3

3 个答案:

答案 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知道如何处理对象,并且它不应该给出内存错误。

还有其他帮助?