Swift中的对象初始化

时间:2016-05-31 09:17:13

标签: ios swift object

我有以下代码:

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函数?

谢谢。

1 个答案:

答案 0 :(得分:2)

让我们一步一步思考这一行:

myBundle = NSBundle.mainBundle()

您使用NSBundle类型声明了变量myBundle。现在需要使用适当的实例对象初始化此变量。你可以使用例如构造函数。但是对于某些类,你有'静态构造函数'。如果没有将变量设置为正确的对象 - 默认情况下它具有nil值,因此您无法访问实例方法。

NSBundle.mainBundle() 

- 这是对NSBundle类(静态方法)的mainBundle方法的调用,它返回正确的实例(对于这种情况 - 它是你的应用程序的主要包。来自文档:

  

NSBundle对象对应的bundle目录   包含当前可执行文件。此方法可能返回有效的包   甚至对于非捆绑应用程序也是对象。如果捆绑也可能返回nil   无法创建对象,因此请始终检查返回值。

希望这有帮助。