的Objective-C也不會允許你運行下面的代碼:檢測在化合物性質的改變
myShape.origin.x = 50
這使得它很容易檢測出產地的變化,因爲使用類有人被迫寫myShape.origin = newOrigin
,因此你可以很容易地綁定到這個屬性的setter。
Swift現在允許您執行原始的,以前不允許的代碼。假設下面的類結構,你如何檢測原點的變化以執行你自己的代碼(例如更新屏幕)?
struct Point {
var x = 0
var y = 0
}
class Shape {
var origin: Point = Point()
}
更新:也許我應該更明確,但認爲我不希望修改Point結構。原因是Shape只是一個使用Point的類,可能還有其他數百個類,更不用說起源不是Point可能被使用的唯一方式。
你可能談論shape'和'origin'的'一些特定的情況下,由於實際上這個結構:'object.subobject.x = 50;'只要'x'有一個setter('x'不是隻讀的)就可以正常運行。 – FreeNickname