如果我使用返回NSMutableArray的方法创建一个NSObject类,我是否需要在类中释放数组或者类是否永远保留?
不确定如何解释所以这里有一些代码:
@implementation PointsClass
- (NSMutableArray *)pointsForLevel
{
NSMutableArray *_points = [NSMutableArray new];
[_points addObject:[NSValue valueWithCGPoint:CGPointMake(521, 279)]];
[_points addObject:[NSValue valueWithCGPoint:CGPointMake(321, 491)]];
[_points addObject:[NSValue valueWithCGPoint:CGPointMake(419, 477)]];
return _points;
}
@end
如果我从这样的ViewController中调用此方法:
PointsClass *pointsClass = [PointsClass new];
NSMutableArray *points = [pointsClass pointsForLevel];
[pointsClass release];
我只需要发布指针数组吗? 是否保留了_points数组?
答案 0 :(得分:2)
new会为你提供一个保留计数为1的对象。所以,是的,你需要在某处释放它。
这里的约定是返回[_points autorelease],然后让调用者决定是否需要保留数组一段时间。
答案 1 :(得分:0)
Apple's Memory Management Programming Guide(你绝对应该阅读)总结得最好:
因为您使用“new”创建了它,所以您有责任释放它。我建议改为:
此外,您正在创建PointsClass的实例(通过new),而不是将其分配给变量。那是内存泄漏。
其他一些指示: