Swift和可变数据中的初始化

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

在观看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
        self.type = type                    // 2

    }

    //...
}
我无法理解用
//1
//2
标记的行。
我知道
copy()
返回一个AnyObject类型,因此需要NSData类型转换。但我不明白为什么
self.type
不需要这种处理。

NSData有一个可变子类NSMutableData,它也可以被传递=>为了安全起见,您必须复制它。 字符串是一个结构,因此通过值传递(复制),所以您不需要复制它