NIB,setValue:forKey和retain(iOS)

时间:2010-08-05 11:59:12

标签: memory-management nib iboutlet

我知道加载NIB时出口连接的一些机制,但我不确定。所以我问一些问题以确保我的知识。我认为这些都是正确的,但很难在参考文档中找到这些。请指出错误和正确的事情。

我有一个像这样定义的IBOutlet :(当然不推荐这种方式)

@implementation
{
    IBOutlet id var1;
}
@end
  1. NIB loader(alloc | retain)&自动释放所有顶级对象。因此,在没有额外保留的情况下,它将在runloop转弯结束时释放。
  2. 使用KVC连接IBOutlet。
  3. KVC主要使用存取方法。
  4. KVC其次使用setValue:forKey。并且IBOutlet将由此方法处理,因为没有声明的属性或访问方法。
  5. setValue:forKey保留新的值对象。
  6. setValue:forKey释放旧值对象。
  7. 因此连接到IBOutlet的顶级对象将保留一次。所以我必须把它发布到dealloc。这就是为什么我必须在dealloc方法上释放连接到IBOutlet的对象。
  8. 如果对象连接了另一个像IBOutlet这样的IBOutlet,它应该再次被释放为dealloc。

0 个答案:

没有答案