我知道加载NIB时出口连接的一些机制,但我不确定。所以我问一些问题以确保我的知识。我认为这些都是正确的,但很难在参考文档中找到这些。请指出错误和正确的事情。
我有一个像这样定义的IBOutlet :(当然不推荐这种方式)
@implementation
{
IBOutlet id var1;
}
@end
- NIB loader(alloc | retain)&自动释放所有顶级对象。因此,在没有额外保留的情况下,它将在runloop转弯结束时释放。
- 使用KVC连接IBOutlet。
- KVC主要使用存取方法。
- KVC其次使用setValue:forKey。并且IBOutlet将由此方法处理,因为没有声明的属性或访问方法。
- setValue:forKey保留新的值对象。
- setValue:forKey释放旧值对象。
- 因此连接到IBOutlet的顶级对象将保留一次。所以我必须把它发布到dealloc。这就是为什么我必须在dealloc方法上释放连接到IBOutlet的对象。
- 如果对象连接了另一个像IBOutlet这样的IBOutlet,它应该再次被释放为dealloc。
醇>