哪个“顶级对象”苹果正在谈论内存管理编程指南吗?

StackOverflow https://stackoverflow.com/questions/804539

  •  03-07-2019
  •  | 
  •  

可可内存管理编程指南 Apple讨论顶级对象。他们说,我需要每个人都有一个Outlet。

  

如果您有任何顶级对象   但是,不要存放在商店中   必须保留返回的数组   通过loadNibNamed:owner:options:   方法或数组中的对象   防止这些物体   过早释放。

那么他们对“顶级对象”究竟是什么意思呢?我会说他们谈论根视图和窗口。还有什么?这个提示仅适用于我想手动加载其笔尖的情况吗?或者它是否适用于任何笔尖和任何情况?

有帮助吗?

解决方案

顶级对象是出现在Interface Builder的主nib窗口中的对象,而不是File&#8217的所有者和应用程序。

其他提示

是的,这是关于您手动加载Nib的情况,否则您不会调用 loadNibNamed:owner:options:

窗口中出现的文件所有者,第一响应者,视图的对象是顶级对象。您添加到视图中的任何内容都将是子视图 - 所有子视图都由其直接超级视图保留,因此不需要将其保留在其他位置。视图本身由视图控制器保留,因此不需要保留。

如果添加非视图对象或未立即放入主视图的视图(例如当前未显示的工具栏按钮),则需要保留它们,否则它们将被释放。我这样做的首选方法是使用@property的IBOutlets,如下所示:

@property(nonatomic, retain) IBOutlet UIBarButtonItem * myButton;

这会导致-setMyButton:在文件所有者上调用(如果此代码在文件所有者中),并且通过IB连接的对象将被发送以存储在此属性中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top