我有以下代码:
var myBundle:NSBundle
myBundle = NSBundle.mainBundle() // what is the role of this line ??
if let path = myBundle.pathForResource("CellDescriptor", ofType: "plist"){
var cellDescriptors: NSMutableArray!
cellDescriptors = NSMutableArray(contentsOfFile: path)
}
为什么我使用这行代码myBundle = NSBundle.mainBundle()
?我读到它正在初始化myBundle
对象。但究竟是什么意思呢?
为什么我不能在不初始化pathForResource
对象的情况下调用myBundle
函数?
谢谢。
答案 0 :(得分:2)
让我们一步一步思考这一行:
myBundle = NSBundle.mainBundle()
您使用NSBundle类型声明了变量myBundle。现在需要使用适当的实例对象初始化此变量。你可以使用例如构造函数。但是对于某些类,你有'静态构造函数'。如果没有将变量设置为正确的对象 - 默认情况下它具有nil值,因此您无法访问实例方法。
NSBundle.mainBundle()
- 这是对NSBundle类(静态方法)的mainBundle方法的调用,它返回正确的实例(对于这种情况 - 它是你的应用程序的主要包。来自文档:
NSBundle对象对应的bundle目录 包含当前可执行文件。此方法可能返回有效的包 甚至对于非捆绑应用程序也是对象。如果捆绑也可能返回nil 无法创建对象,因此请始终检查返回值。
希望这有帮助。