當定義了乙個屬性的時候,例如
@property (nonatomic, strong) uiimageview* imageview;
有兩種訪問方法self.imageview、_imageview,屬性訪問和直接訪問有幾個區別:
1直接訪問不用經過「方法派發」,速度上有一定的優勢
2直接訪問,繞過了「記憶體管理語義」,比如乙個屬性宣告為copy的,直接訪問只會釋放舊值並保留新值,不會copy。
3不會出發kvo,這個可能會導致一定的問題
4屬性訪問有助於排查bug,可以getter和setter設定斷點
所以有一種現行的折中方案:寫的時候,使用屬性訪問;讀的時候,直接訪問。之所以寫的時候選用屬性訪問,是要確保「記憶體管理語義」得到實施。有兩個需要注意的地方,一是在初始化方法中如何設定屬性值,應該是直接訪問,因為子類會override。二是lazy initialization的時候,應該是屬性訪問,否則實力變數永遠不會正確地初始化。
Objective C 使用點運算子訪問屬性
objective c語言允許你使用非常簡便的語法訪問屬性。要獲得 myfraction 中儲存的 numerator 的值,可使用以下語句 myfraction numerator 這會向 myfraction 物件傳送 numerator 訊息,從而返回所需的值。從 objective c 2....
Objective c 訪問控制
在objective c中定義類時,也可以使用類似於c 中public private來修飾成員變數,如下 intte ce test nsobject protected 用此指令修飾的例項變數可以被該類和任何子類定的方法直接訪問,這是預設情況。private 用此指令修飾的例項變數可以被定義在該...
Objective c 訪問控制
在objective c中定義類時,也可以使用類似於c 中public private來修飾成員變數,如下 cpp view plain copy intte ce test nsobject protected 用此指令修飾的例項變數可以被該類和任何子類定的方法直接訪問,這是預設情況。privat...