cocoa - [NSWindowController initWithWindowNibName :owner]? 中窗口 Controller 以外的所有者

标签 cocoa xib nswindow nib nswindowcontroller

我想知道的是我用的窗口 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/

相关文章:

objective-c - 如何在 Cocoa 应用程序中将 NSView 添加到 NSWindow?

objective-c - NSArrayController 和异常 "CoreData could not fulfill a fault"

php - PHP 开发人员的 Cocoa 技巧?

cocoa - 指定在外观上编辑 NSPopover 内的 NSTextField

ios - xib/uibuttons 添加为 ViewController subview ?

cocoa - 根据给定的窗口 ID 确定窗口位于哪个屏幕上

objective-c - NSWindowController 和 NSViewController

objective-c - 我应该使用什么数字对象,需要从 NSString 转换 1.4 并执行 If 小于?

objective-c - 如何复制 .xib 文件?

ios - 如何在 xib 本地化之间切换