以點運算子存取屬性 instance.property
以點運算子存取屬性
Objc 允許使用更簡便的語法來存取實體變數。若要取得 myFraction 物件的 numerator 的值,可寫成:
[ myFraction numerator ]此敘述將 numerrator 訊息傳給 myFraction 物件,之後回傳 numerator 的值。
在Objc 裡也可以用點運算子來表示:
myFraction.numerator一般格式為:
instance.property也可以用相似的語法設定物件的值:
instance.property = value或這樣表示:
[instance setProperty: value]例如設定分子分母:
[ myFraction setNumerator : 1 ];同樣的我們也可以改成點敘述表示:
[ myFraction setDenominatpr : 3 ];
myFraction.numerator = 1;之後則會使用合成 ( synthesize ) 方法的新特徵以存取實體變數。
myFraction.denominator = 3;
值得一提的是,也可以使用點運算子於方法。此外,若有一個 getter 方法稱為 numerator ,你仍然可以在程式中撰寫如 myFraction.numerator 的運算式,即使 numerator 尚未被定義為property。
注意:
基於前面的討論,雖然撰寫 myFraction.print 敘述在與法中是對的,但不是好的程式設計風格。點運算子與實體變數結合使用時,就是用來設定/擷取實體變數。而點運算子與方法合用時,在 Apple 的文件稱之為任務 ( Task )。Task 通常不會利用點運算子來執行,而較喜歡以傳統的括號訊息表示式。
注意:
若您合成存方法,請不要將實體變數名稱至於 new、alloc、copy 或 init 的前面。
這些必須假設編譯器會將相對應的方法加以合成。
留言
張貼留言