弱不能適用於非類類型:因爲這些都是
這意味着你不能有一個弱引用任何值類型實例(例如數組,字典,字符串,等等)結構不類。你只給出弱類的引用類型(例如UIImage,UIImageView等)。在這種情況下,你試圖給UIImageView Array提供一個弱引用,並且我們知道array是一個值類型,所以這是不可能的。
例如:
weak var str: String? //CompileTime Error(Wrong)
weak var arr: Array? //CompileTime Error(Wrong)
weak var imageView: UIImageView? //Correct
在協議的情況下: 如果我們只是結構類型的協議:
protocol SomeProtocol{
func doSomething()
}
我們不能宣佈爲弱這一類型的變量:
weak var delegate: SomeProtocol? //CompileTime Error(Wrong)
但是,如果我們製作這樣的類型協議:
protocol SomeProtocol: class{
func doSomething()
}
我們可以聲明這種類型的變量弱:
weak var delegate: SomeProtocol? //Correct
我想你很容易理解,爲什麼發生這種情況在協議?
相同的原因:你只給予弱類型,這是類型的
你是一個救世主。謝謝 – ekeith