嘿所有,这是我一直想知道的事情,从来没有真正弄明白。如果我分配并初始化另一个类的实例变量/属性(下面的示例),我是否负责释放它?
在Foo中,我有一个Bar实例(称为bar),并想要像这样初始化一个Bar的变量:
self.bar.variable1 = [[UIBarButtonItem alloc] initWithCustomView:customView];
答案 0 :(得分:4)
Foo负责释放它创建的UIBarButtonItem,因为Foo 拥有它。只需向autorelease
发送UIBarButtonItem
消息即可完成此操作。否则,这将泄漏。
self.bar.variable1 = [[[UIBarButtonItem alloc] initWithCustomView:customView] autorelease];
如果Bar需要保留variable1
,则必须声明UIBarButtonItem
的所有权。 Bar负责UIBarButtonItem
本身保留(然后在将来某个时候发布)。
答案 1 :(得分:1)
通常,负责分配对象的任何类都被视为对象的所有者,因此负责释放实例。 Memory Management Programming Guide给出了很好的描述,特别是在“对象所有权和处置”部分
答案 2 :(得分:1)
可能会让你更容易理解。
UIBarButtonItem * buttonItem = [[UIBarButtonItem alloc] initWithCustomView:customView]
self.bar.variable1 = buttonItem;
[buttonItem release];
答案 3 :(得分:0)
YES。除非你没有在Bar类中发布它,否则你必须释放它。