【发布时间】:2010-12-13 15:53:43
【问题描述】:
这是在 iPhone 上。
如果我有这样的功能呢
- (SomeObject*)buildObject;
我是否需要传入一个我已经分配到外部的变量
- (void)assignObject(SomeObject** out);
我可以吗
- (SomeObject*)buildObject
{
return [[[SomeObject alloc] init] autorelease];
}
并像使用它
SomeObject* obj = [[otherObject buildObject] retain];
我想做最后一个,但据我所知,这是未定义的,因为 autorelease 只保证对象直到函数结束?
【问题讨论】:
-
附注一下,objective-c 命名约定建议您应该将 buildObject 便捷方法命名为“object”,就像 NSArray 具有返回自动释放数组的便捷方法 [NSArray array] 一样。
-
另外,它应该是类方法 (+) 而不是实例方法 (-),除非出于其他原因。
标签: iphone objective-c memory-management