Swift 如果NSDictionary是引用类型,那么为什么它不将自身传播到子类?
根据苹果的博客,他们说:另一方面,复制引用会隐式地创建一个共享实例。复制后,两个变量引用数据的单个实例,因此修改第二个变量中的数据也会影响原始变量Swift 如果NSDictionary是引用类型,那么为什么它不将自身传播到子类?,swift,Swift,根据苹果的博客,他们说:另一方面,复制引用会隐式地创建一个共享实例。复制后,两个变量引用数据的单个实例,因此修改第二个变量中的数据也会影响原始变量 // Reference type example class C { var data: Int = -1 } var x = C() var y = x // x is copied to y x.data = 42 // changes t
// Reference type example
class C { var data: Int = -1 }
var x = C()
var y = x // x is copied to y
x.data = 42 // changes the instance referred to
by x (and y)
println("\(x.data), \(y.data)") // prints "42, 42"
然后我在NSDictionary课上试了一下。但它不像普通班那样工作。所以我不能像上面的例子那样使用NSDictionary类作为类型
var a = NSDictionary()
var b = a
a = ["a":"b"]
b.object(forKey: "a") . //nil
你的第二次测试无效。将
NSDictionary
分配给a
。然后你把b
指向同一本词典。但随后您将一个全新的Swift字典分配给a
。这对b
没有影响b
仍然指向分配给它的原始NSDictionary
。将a
重新分配给其他对象永远不会改变b
这里有一个更好的测试
var a = NSMutableDictionary()
b = a
a["a"] = "b"
b.object(forKey: "a") // "b"
这里,
a
和b
都指向相同的NSMutableDictionary
。当您通过a
更新该字典时,您将看到b
中的更改,因为这两个变量都指向同一个字典。您的第二个测试无效。将NSDictionary
分配给a
。然后你把b
指向同一本词典。但随后您将一个全新的Swift字典分配给a
。这对b
没有影响b
仍然指向分配给它的原始NSDictionary
。将a
重新分配给其他对象永远不会改变b
这里有一个更好的测试
var a = NSMutableDictionary()
b = a
a["a"] = "b"
b.object(forKey: "a") // "b"
这里,a
和b
都指向相同的NSMutableDictionary
。当您通过a
更新该字典时,您将看到b
中的更改,因为这两个变量都指向同一个字典。var a=NSDictionary()
后跟a=[“a”:“b”]
,这是对a
的过度引用。你在找这个:?a=[“a”:“b”]
将a
指向一本全新的词典。尝试将a
设置为NSMutableDictionary
,然后插入一个新的键。var a=NSDictionary()
后跟a=[“a”:“b”]
,您的设置过度了a
。你在找这个:?a=[“a”:“b”]
将a
指向一本全新的词典。尝试制作a
一个NSMutableDictionary
,然后插入一个新键。