objective-c 编写规范_Objective-c成员变量的定义方式?如何写才规范?
第二第三種個人感覺是極不規范的。
第一種是比較老式的寫法,不過 NSString *_test; 這個就是多余的了,這個是更老式的了,那時候要手寫 getter setter
因為有了 synthesize 自動屬性合成器以后,這步,Xcode已經幫你做過了。
還幫你寫了默認的 getter setter 方法,有下劃線就是標識,這個是成元變量,以便于區分 getter setter 中的形參(局部變量)。
在 m 文件中是可以直接對 帶下劃線的 成員變量進行賦值等操作的,但規范還是建議 使用 self.test 這樣來操作,除非你正在 setter getter 方法中,那是不能用這個。
還有谷歌那個 objc 代碼風格,, 哈哈成員變量 下劃線在后面, test_ ,又暈了吧?我估計這個風格是為了完全區分 純成員變量,和 屬性。就是說 后面帶下劃線的這貨,就純粹是類本身自己用,沒有 getter setter,不需要給別的類訪問。
最后,早在 Xcode 4.6 起,還是更早來著,記不得了, 什么 synthesize 根本不用寫的,Xcode 已經幫你寫了 @synthesize test = _test。
所以現在最簡潔的思路就是,如果你這個變量,是要給其他類能夠訪問到的,那么你就直接寫個 @property 就夠了。
聲明成員變量 NSString *_test; 還有屬性合成器 @synthesize test = _test,不需要寫了,
如果你這個變量,完全不需要給類外部訪問,那么你就 自己聲明個 成員變量 NSString *test_; 其他別寫。該初始化的地方初始化該釋放的釋放
//----------------
發現被踩了下,純個人理解可能會有誤,如有誤望不吝請指出,多謝,
前面最后說的有些不嚴謹了~ 沒說 在 h 和 m 中的區別。
在 h 中,只有 成員變量的話雖然沒有 getter setter , 子類還是能訪問的。屬性的話就是相當于公開的。
在 m 中,都是私有了。
總結
以上是生活随笔為你收集整理的objective-c 编写规范_Objective-c成员变量的定义方式?如何写才规范?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ionic3 cordova ionic
- 下一篇: day16-Dom提交表单以及其他