程式設計的有效方法 例項變數的訪問

2022-09-04 13:36:23 字數 565 閱讀 9514

1、為什麼寫這篇微博

在物件外部訪問例項變數時,通過屬性來作,而在物件內部訪問例項變數,是應該直接訪問還是通過屬性訪問,一直存在著很大爭議。要想解決這一問題,必須明白這兩者實現方式的區別;

2、二者實現方式的區別

通過直接訪問的形式不經過oc的」方法派發「(以後會深入)的步驟,訪問的速度較快一些。這種方式會直接訪問例項變數的那塊記憶體,而不會呼叫其設定方法,這樣就繞過了例項變數所定義的「記憶體管理語義」。比如,在arc下直接訪問被copy所定義的例項變數,它不會拷貝這個例項變數。

如此一來,就引申出了這樣的乙個現象。通過直接訪問例項變數的方式,不會觸發kvo,因為kvo的觸發是基於記憶體位址的改變。

通過屬性訪問例項變數有助於我們排查錯誤,例如我們可以在setter或者getter方法中新增斷點,檢測引用時機;

3、二者的使用時機

1>在物件內部訪問例項變數時,應該使用直接訪問來讀,通過屬性來寫;

2>在初始化和delloc方法中,應該使用直接訪問的方式讀和寫;(子類中可能覆寫了父類的setter方法)

3>有時會使用惰性初始化來配置某乙份資料,此時應該通過屬性寫入資料;(懶載入)

變數的有效範圍

變數的有效範圍是指 程式 能夠訪問該變數的區域 如超出該區域,則編譯時會出現錯誤。根據變數的有效範圍將變數分為全域性變數 成員變數 和區域性變數 成員變數 在類體中定義的變數,成員變數在整個類中都是有效的。成員變數分為靜態變數和例項變數 靜態變數可以跨類,甚至可達到整個應用程式之內。除了能在定義它的...

12 個有效的提高程式設計技能的方法

1.永遠不要停止學習和閱讀 閱讀 書籍,而不只是 閱讀 只為自我提公升,而不是為了下乙個專案 閱讀 提公升你的基礎,而不只是最新技術 2.跟比你聰明的人一起工作 跟比你更聰明的人或者是更有經驗的人一起工作,可以讓你快速提公升 3.變成乙個全才 不要過於鑽牛角尖,這可能會讓你停滯不前和傷害你的就業前景...

12 個有效的提高程式設計技能的方法

1.永遠不要停止學習和閱讀 閱讀 書籍,而不只是 閱讀 只為自我提公升,而不是為了下乙個專案 閱讀 提公升你的基礎,而不只是最新技術 2.跟比你聰明的人一起工作 跟比你更聰明的人或者是更有經驗的人一起工作,可以讓你快速提公升 3.變成乙個全才 不要過於鑽牛角尖,這可能會讓你停滯不前和傷害你的就業前景...