gpt4 book ai didi

objective-c - 我需要在 Nib 的文件所有者中为哪些顶级对象创建 Outlest,以便减少内存问题?

转载 作者:行者123 更新时间:2023-12-03 21:00:28 25 4
gpt4 key购买 nike

Apple 说,我需要在我的文件所有者中为 Nib 文件中的所有顶级对象提供 socket 。

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

我不确定: Nib 中的 View 对象,以及 Nib 中的任何 Controller 对象。我需要为文件所有者提供一个导出吗?

这个问题是关于内存管理的。他们说:

You should always keep a pointer to these objects somewhere because your application is responsible for releasing them wen it is through using them

那么当用户关闭应用程序时,如果我错过了这些导出,就会出现笨拙的内存泄漏?

最佳答案

这是正确的。 Nib 文件的文件所有者是该 nib 的入口点。由于 nib 之外的任何内容都不能引用除文件所有者之外的任何内容,因此只有文件所有者可以引用 nib 中的其他顶级项目。如果文件的所有者没有引用它们,那么当不再需要 Nib 时就无法释放这些对象,并且它们将卡在内存中。

Nib 的生命周期是这样的:

  1. Nib 已加载,文件所有者已与您指定的对象关联。
  2. 内存分配给 Nib 中的所有顶级对象。
  3. 所有 socket 均按照 Nib 中的指定连接。
  4. ...事情发生了...
  5. 向文件所有者对象发送释放消息。
  6. 文件所有者释放所有连接到其导出的对象。

正如您所看到的,如果在最后一步中没有释放第二步中分配的任何对象,则仍然会在内存中 float 。

关于objective-c - 我需要在 Nib 的文件所有者中为哪些顶级对象创建 Outlest,以便减少内存问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/786414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com