使用IBOutlet / NIB时的内存管理

时间:2011-05-18 21:36:33

标签: iphone ios memory-management interface-builder nib

我的应用程序即将完成,我一直在使用仪器进行分析。我正在检查保留各种物体的数量。

我一直小心地释放任何我称之为alloc的对象,而这些对象似乎没有泄漏 - 所以很酷。

但是,我有一个视图控制器,里面有UIPickerView。我通过在IB中将它拖到我的NIB上来设置它,使用IBOutlet定义属性,合成它,然后将它全部连接起来。

每次启动视图时,UIPickerViews的数量似乎都会增加一个。我假设我不需要自己发布这种东西,因为我将它分配给了一个属性(使用非原子,保留)。

这发生在我的所有UI内容 - 按钮等,而不仅仅是选择器视图。我只是以此为例。

有人可以帮助我吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

加载视图时,将为您保留从NIB创建的所有项目,并初始化指向那些保留的子视图对象的IBOutlet指针。您需要在viewDidUnload中释放它们。你在做吗?

在viewDidUnload中,您应该释放从NIB创建的所有对象,并将这些指针设置为nil。您还应该在dealloc中释放这些相同的对象。 Example here.