Interface Builder中的GC和对象创建

时间:2011-02-27 19:59:25

标签: objective-c cocoa interface-builder

在垃圾收集设置为必需的项目中:如果我在Interface Builder中实例化一个对象并将其添加到XIB / NIB,我是否需要将此对象分配给某个插座以避免被垃圾收集,或者是通过其他方式照顾?

2 个答案:

答案 0 :(得分:1)

在实例化nib时,需要使用顶级对象数组将顶级对象分配到某个出口或附加到某个变量。否则,无论如何它们对你都没用。包含在另一个视图或窗口中的视图位于该视图实例变量中,因此它是安全的。

答案 1 :(得分:0)

我刚刚建立了一个小型测试项目。使用GC,通过Interface Builder创建的对象很快就会被收集。所以问题的答案是:

我做了一些测试:

经典引用计数不会发生这种情况。这可能是人们所期望的,但它也可能是内存泄漏。这里不确定。 (如果没有,并且在文件所有者发布时释放了NIB / XIB包含的对象,例如,这将构成GC和经典RC之间行为的显着差异。)

启用ARC后,我找不到告诉的方法。可能有一些功能我可以设置断点并等待特定对象飞过。

编辑:

我查看了文档,并且说得非常清楚。错过了第一次:

  

您通常需要对顶级对象的强引用,以确保它们不会被释放;你不需要强烈引用图中较低的对象,因为它们是由父母拥有的,你应该尽量减少创建强引用周期的风险。

来自:Resource Programming Guide, Managing the Lifetimes of Objects from Nib Files