我想知道的是我用的窗口 Controller 是如何初始化的
NSWindowController *c=[[NSWindowController alloc] initWithWindowNibName:@"Win" owner:myObj]
如果 myObj 不是 Controller 本身,知道它应该在 Win.xib 文件中控制哪个窗口吗?通常我将窗口 Controller 设置为所有者,以便我可以在 IB 中通过 socket 设置其窗口。内存管理是否全部由窗口 Controller 完成,即使它不是所有者?
最佳答案
窗口 Controller 将对顶级对象进行内存管理,即使它不是所有者。来自 NSWindowController
class reference :
Regardless of who is the file’s owner, the window controller is responsible for freeing all top-level objects in the nib file it loads.
不过,窗口 Controller 通常是 NIB 的所有者,连接其窗口导出通常是它知道要控制哪个窗口的方式。还可以使用 -setWindow:
方法显式设置它。
可以想象,NSWindowController
会在 NIB 的顶级对象中搜索窗口来控制 socket 是否未连接,但我不认为它会这样做。
您是否观察到一些您不理解的行为?那是什么?
关于cocoa - [NSWindowController initWithWindowNibName :owner]? 中窗口 Controller 以外的所有者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14789887/