以點運算子存取屬性 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;
myFraction.denominator = 3;
之後則會使用合成 ( synthesize ) 方法的新特徵以存取實體變數。
值得一提的是,也可以使用點運算子於方法。此外,若有一個 getter 方法稱為 numerator ,你仍然可以在程式中撰寫如 myFraction.numerator 的運算式,即使 numerator 尚未被定義為property。

注意:
基於前面的討論,雖然撰寫 myFraction.print 敘述在與法中是對的,但不是好的程式設計風格。點運算子與實體變數結合使用時,就是用來設定/擷取實體變數。而點運算子與方法合用時,在 Apple 的文件稱之為任務 ( Task )。Task 通常不會利用點運算子來執行,而較喜歡以傳統的括號訊息表示式。

注意:
若您合成存方法,請不要將實體變數名稱至於 new、alloc、copy 或 init 的前面。
這些必須假設編譯器會將相對應的方法加以合成。



留言

這個網誌中的熱門文章

[GoPro] 副檔名 LRV 和 THM 到底是什麼?

[Mac] 資料夾半透明無法開啟

[Git] Git rename from index.lock to index failed.