2017-03-19 22 views
0

The documentation for the NSApplicationMain function说,它NSApplicationMain如何找到主要的笔尖文件?

负载从应用程序的主束主要笔尖文件

它建议NSApplicationMain通过查看Info.plist文件在发现“的主要笔尖文件”在网络上关键NSMainNibFile(由的XCode混淆为“主笔尖文件基本名称”),即NSApplicationMain确实像

let mainBundle: Bundle = Bundle.main 
let mainNibFileBaseName: String = mainBundle.infoDictionary!["NSMainNibFile"] as! String 
mainBundle.loadNibNamed(mainNibFileBaseName, owner: myApp, topLevelObjects: nil) 

但是,如果我删除NSMainNibFile密钥,应用程序仍会找到并加载我的MainMenu.xib文件!然后,如果我将文件重命名为Foo.xib,则应用程序会查找并加载Foo.xib

NSApplicationMain用来查找“主笔尖文件”的真实搜索程序是什么?

回答

2

如果密钥NSMainNibFile丢失,NSApplicationMain电话[NSBundle loadNibNamed:nil owner:application]这就要求[mainBundle pathForResource:nil ofType:@"nib"]返回找到的第一个笔尖文件。

+0

非常简明明确的答案,谢谢!作为参考:['load Nib命名(_:owner:options:)'](https://developer.apple.com/reference/foundation/bundle/1618147-loadnibnamed)和['path(for资源:类型:)'](https://developer.apple.com/reference/foundation/bundle/1410989-path) – jameshfisher

+0

我有点困惑,因为'加载Nib命名(_: owner:options:)'不允许'nil'作为第一个参数。此行为是否记录在案? – jameshfisher

+0

不,但Objective-C不介意。 [loadNibNamed:owner:](https://developer.apple.com/reference/foundation/nsbundle/1402904-loadnibnamed)已弃用。 – Willeke