Swift和可变数据中的初始化
在观看WWDC'14会议“将Swift与Objective-C集成”时,44'00的演讲者写了两行我无法理解的代码 在初始化一个对象时,他写道:Swift和可变数据中的初始化,swift,Swift,在观看WWDC'14会议“将Swift与Objective-C集成”时,44'00的演讲者写了两行我无法理解的代码 在初始化一个对象时,他写道: Class className; NSObject, NSCoding { let data:NSData let type:String init(data: NSData, type: String) { self.data = data.copy() as NSData // 1
Class className; NSObject, NSCoding
{
let data:NSData
let type:String
init(data: NSData, type: String)
{
self.data = data.copy() as NSData // 1
self.type = type // 2
}
//...
}
我无法理解用//1
和//2
标记的行。
我知道
copy()
返回一个AnyObject类型,因此需要NSData类型转换。但我不明白为什么self.type
不需要这种处理。NSData有一个可变子类NSMutableData,它也可以被传递=>为了安全起见,您必须复制它。
字符串是一个结构,因此通过值传递(复制),所以您不需要复制它