debole non può essere applicato al tipo non-classe:
significa che non si può avere un debole riferimento a qualsiasi istanza tipo di valore (ad esempio Array, dizionario, String, ecc ...) perché questi sono tutti struct not class. Fornite solo riferimenti deboli che sono di tipo classe (ad esempio UIImage, UIImageView, ecc ...). In questo caso, si sta tentando di fornire un riferimento debole a UIImageView Array e sappiamo che l'array è un tipo di valore, quindi non è possibile.
Ad esempio:
weak var str: String? //CompileTime Error(Wrong)
weak var arr: Array? //CompileTime Error(Wrong)
weak var imageView: UIImageView? //Correct
In caso di protocollo: Se abbiamo solo un protocollo di tipo struct:
protocol SomeProtocol{
func doSomething()
}
Non possiamo dichiarare variabili di questo tipo come deboli:
weak var delegate: SomeProtocol? //CompileTime Error(Wrong)
Ma se facciamo un protocollo di tipo classe come questo:
protocol SomeProtocol: class{
func doSomething()
}
Possiamo dichiarare variabili di questo tipo come debole:
weak var delegate: SomeProtocol? //Correct
Penso che si capisce facilmente, perché questo accade nel protocollo?
stesso motivo: solo dare riferimento debole che sono di classe di tipo
sei un salvatore. Grazie – ekeith