观看WWDC' 14会议"将Swift与Objective-C和#34整合; 44&00; 00"写了两行我无法理解的代码。
在对象初始化期间,他写道:
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
不需要这种治疗。
答案 0 :(得分:7)
NSData具有可传递的子类NSMutableData,也可以传递=>你必须复制它才能安全。 String是一个结构,因此通过值传递(复制),因此您不需要复制它。