在默认的 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 生命周期在哪里

OS X 上的 Core Data 轻量迁移

如何在 OS X 10.9 中卸载多个 Xcode 实例

在 OS X 上使用 OpenCV 的 OpenMP

在 Mac OS X 中没有 XCode 项目的 qmake QT 4.6 应用程序?

Core Data Macos 应用程序和与 OS X 10.7 的兼容性