我需要在我的笔尖的文件所有者中创建Outlests的顶级对象,以便我有更少的内存问题?

时间:2009-04-24 15:45:20

标签: objective-c iphone memory-management uikit

Apple说,我需要在我的文件所有者中为一个Nib文件中的所有顶级对象安装Outlets。

据我所知,这些对象不是文件所有者本身(没有意义,对吧?)和第一响应者。

我不确定:Nib中的View对象,以及nib中的任何控制器对象。我是否需要文件所有者的插座?

这个问题与内存管理有关。他们说:

  

你应该总是在某处保留指向这些对象的指针,因为你的应用程序负责通过使用它们来释放它们

因此,当用户关闭应用程序时,如果我错过了那些网点,我会有一个笨重的内存泄漏?

1 个答案:

答案 0 :(得分:3)

这是对的。 Nib文件的文件所有者是该笔尖的入口点。由于笔尖外部没有任何内容可以引用除文件所有者之外的任何内容,因此只有文件所有者可以引用笔尖中的其他顶级项目。如果文件所有者没有引用它们,那么当不再需要这个对象时就没有办法释放这些对象,它们会在内存中徘徊。

笔尖的生命周期是这样的:

  1. 加载笔尖,文件所有者与您指定的对象关联。
  2. 为笔尖中的所有顶级对象分配内存。
  3. 所有插座均按照笔尖指定连接。
  4. ...事情发生......
  5. 发送文件所有者对象的发布消息。
  6. 文件所有者释放连接到其出口的所有对象。
  7. 正如您所看到的,如果在最后一步中没有释放,那么在第二步中分配的任何对象仍将在内存中浮动。