IBOutlets使用的内存是如何管理的?

时间:2011-04-28 11:47:00

标签: iphone objective-c

我的大多数视图控制器都有几个插座,我总是将它们与头文件中的属性链接起来,如下所示:

IBOutlet UIButton *homeButton;
@property (nonatomic, retain) IBOutlet UIButton *homeButton;

我应该在这里使用assign,因为我假设NIB正在处理内存吗?

2 个答案:

答案 0 :(得分:8)

引自Resource Programming Guide

  

创建nib文件中的对象   保留计数为1然后   自动释放。因为它重建了   然而,对象层次结构,UIKit   重新建立之间的联系   使用setValue的对象:forKey:   方法,它使用可用的   setter方法或保留对象   如果没有setter方法,则为default   可用。 如果您为其定义商店   nib-file对象,你应该总是这样   定义一个setter方法(或声明   访问该出口。   出口的塞特方法应该   保留他们的价值观和设定者   包含出口的方法   顶级对象必须保留它们   价值,以防止他们   取消分配。如果你不存储   你必须在网点的顶级对象   保留返回的数组   loadNibNamed:owner:options:方法   或者数组中的对象   防止这些物体   过早释放。

在那里你可以找到有关如何从nib文件加载对象的更多细节,但简而言之 - 不,你必须使用IBOutlets的保留属性。

答案 1 :(得分:-2)

您只需在delloc

中释放iboutlets对象