我正在开发一个捆绑代码库 – 而不是一个应用程序 – 在10.4开始开发,并且需要在10.4上运行,但是一直工作到10.8.它手动加载来自nib文件的视图,我最近才意识到存在大量内存泄漏,因为nib利用绑定并绑定文件的所有者,创建引用循环并阻止文件的所有者类解除分配.我认为通过让“文件所有者”加载自己的笔尖会使情况变得更糟.
我使用以下代码加载nib(此代码在基类中,子类重写nibName):
NSString *nibName = [[self class] nibName]; NSNib *nib = [[NSNib alloc] initWithNibNamed:nibName bundle:myBundle]; [nib instantiateNibWithOwner:self topLevelObjects:&topLevelObjects];
由于我必须以10.4为目标,因此无法使用NSViewController.我想我需要实现自己的视图控制器类,但是如何防止引用周期发生,因为NSViewController类承诺呢?如果视图控制器是笔尖的“文件所有者”,那么我不会只是将参考周期从当前类推送到我的视图控制器吗? NSViewController做了什么来防止这种情况?