【发布时间】:2009-11-05 16:16:43
【问题描述】:
我只是好奇这是对的还是不好的做法? (即使用类方法分配/初始化实例)?我是否也认为我必须在 main() 中释放实例作为我可以访问实例指针的唯一位置?
// IMPLEMENTATION
+(id) newData {
DataPoint *myNewData;
myNewData = [[DataPoint alloc] init];
return myNewData;
}
.
// MAIN
DataPoint *myData;
myData = [DataPoint newData];
... stuff
[myData release];
编辑:
也应该
myNewData = [[DataPoint alloc] init];
是(或者没关系)
myNewData = [[self alloc] init];
EDIT_002:
奇怪,当我添加自动释放时,我得到...
EDIT_003:
@Dave DeLong,最后一个问题,你的说法适合:
+(id) dataPoint {
return [[[self alloc] init] autorelease];
}
而不是(在 main 中释放)
+(id) new {
return [[self alloc] init];
}
干杯加里
【问题讨论】:
-
autorelease sn-ps 在上面的代码(和答案中)可以(并且应该)在 ARC 代码中删除。
标签: objective-c cocoa