【发布时间】:2013-03-16 21:13:27
【问题描述】:
我正在开发一个捆绑代码库(而不是应用程序),其中开发从 10.4 开始,需要在 10.4 上运行,但一直到 10.8。它手动从 nib 文件加载其视图,我最近才意识到存在大量内存泄漏,因为 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 类所承诺的那样发生?如果视图控制器是 nib 的“文件所有者”,我不是只是将引用周期从当前类推送到视图控制器吗? NSViewController 做了什么来防止这种情况发生?
【问题讨论】:
标签: objective-c macos cocoa memory-management nib