如果我有以下属性:
@property (nonatomic, retain) MyObject *theObject;
然后如果我想创建一个新的MyObject,请执行以下操作:
self.theObject = [[MyObject alloc] init];
或:
self.theObject = [[[MyObject alloc] init] autorelease];
答案 0 :(得分:2)
你必须使用自动释放。如果不这样做,该对象的释放计数为2(一个来自alloc
,一个来自设置者的retain
),因此当该属性未设置时,它将被泄露。
这仅适用于strong或保留和复制属性。应该为赋值和弱属性分配一个alloc-initted对象,因为它们不会改变它的引用计数。
答案 1 :(得分:2)
如果你必须 - 第二个。
如果您使用的是生成的setter,则表示已将其标记为retain
。这意味着将保留存储在该属性中的值,因此您无需将其传递给拥有的对象。
由于它被保留,您需要在dealloc中释放它。