在默认的 Xcode OS X 应用程序模板中,File's Owner == NSApplication?
Posted
技术标签:
【中文标题】在默认的 Xcode OS X 应用程序模板中,File\'s Owner == NSApplication?【英文标题】:In default Xcode OS X application template, is File's Owner == NSApplication?在默认的 Xcode OS X 应用程序模板中,File's Owner == NSApplication? 【发布时间】:2012-10-24 04:54:03 【问题描述】:我来自 iPhone 应用程序开发背景。我试图了解应用程序初始化阶段如何在 OS X 应用程序中工作。我觉得令人费解的一件事是,当您最初在 Xcode 4.5.1 中创建应用程序时,它会为您提供一个包含 File's Owner
对象和 Application
对象的单个 XIB 文件。
两者似乎都有相似的插座和接口。所以我想知道:
它们是否指向同一个对象? 在NSApplicationMain()
期间,此XIB 和NSApplication
实例究竟会发生什么?
这个 XIB 内容的File's Owner
变成了什么?
将插座连接到一个插座而不连接另一个插座有什么区别?
【问题讨论】:
【参考方案1】:NSApplicationMain 是一个黑盒,你不应该关心它到底做了什么(我也不知道,但它做了很多不同的事情),但我们可以确定它直接或间接读取应用程序包的info.plist,找到 Principal Class 的名称和包含主菜单的 nib 的名称,创建 Principal Class 的实例(NSApplication 或子类),然后反序列化主菜单。
所有 nib 都有一个占位符,用于应用程序的 NSApplication 实例和 nib 的“文件所有者”(取消序列化 nib 的对象)。
由于 NSApplication 实例对主菜单 nib 进行反序列化,在这种情况下,应用程序和文件的所有者占位符恰好是同一个对象。无论您将 Outlet 连接到哪个,都将连接到同一个对象。
【讨论】:
以上是关于在默认的 Xcode OS X 应用程序模板中,File's Owner == NSApplication?的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 5 文档模板 Apps OS X:App 生命周期在哪里