[問題] 請教一個變數名稱宣告的問題

看板MacDev作者 (衝啊~)時間14年前 (2010/12/01 14:34), 編輯推噓2(2017)
留言19則, 4人參與, 最新討論串1/1
各位好 在有些範例裡面可以看到變數名稱宣告前面加一個底線 請問加底線在ob-c裡面有什麼特殊的用途嗎? 感謝! 例如: NSMutableArray *_thingsToLearn; 為何不直接用 NSMutableArray *thingsToLearn; from http://www.raywenderlich.com/2033/ core-graphics-101-lines-rectangles-and-gradients -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.82.105.125

12/01 15:48, , 1F
我猜這人之前是寫 C++ 的...C++ setter/getter functions
12/01 15:48, 1F

12/01 15:48, , 2F
和變數不能同名, Objective-C 沒這問題, 其實不加 _ 沒差
12/01 15:48, 2F

12/01 20:08, , 3F
obj-c沒有namespace,所以只好自己找方法避開命名衝突。
12/01 20:08, 3F

12/01 20:09, , 4F
而apple的官方文件,有一份會談到這個命名的prefix,suffix
12/01 20:09, 4F

12/01 20:09, , 5F
的慣例,他會希望你前面不要加_,而是加在最後面,
12/01 20:09, 5F

12/01 20:09, , 6F
或是其它的prefix。原因其實也很簡單…
12/01 20:09, 6F

12/01 20:10, , 7F
那種命名慣例被apple用走了,他怕你會跟他衝突到~~
12/01 20:10, 7F

12/01 20:10, , 8F
所以不要跟他一樣在變數前加"_"
12/01 20:10, 8F

12/01 20:12, , 9F
至於加在最後面的範例程式,我發現現在new一個有CoreData
12/01 20:12, 9F

12/01 20:12, , 10F
的project,他的變數命名就是變數最後面帶著"_"
12/01 20:12, 10F

12/02 00:55, , 11F
會在前面加底線的通常是成員變數,用來好分辨是在 method
12/02 00:55, 11F

12/02 00:55, , 12F
裡頭用的變數,還是成員變數。不過現在蘋果建議不要加,因
12/02 00:55, 12F

12/02 00:55, , 13F
為這個慣例已經被蘋果自己用掉了。
12/02 00:55, 13F

12/02 00:56, , 14F
Google 的 objc style 則是在成員變數後面加底線
12/02 00:56, 14F

12/02 00:57, , 15F
Google 的 coding style 手冊 http://ppt.cc/gen.php
12/02 00:57, 15F

12/02 00:57, , 16F
話說以前還需要特別用這種方法區隔成員變數,是 Xcode 2 的
12/02 00:57, 16F

12/02 00:57, , 17F
時候,IDE 功能還頂遜的。但是 Xcode 3 會自動幫你把成員
12/02 00:57, 17F

12/02 00:58, , 18F
變數用不同的顏色標記出來
12/02 00:58, 18F

12/02 09:15, , 19F
哇!感謝各位先進的解答!好詳細,這樣整個懂了!!!!
12/02 09:15, 19F
文章代碼(AID): #1CzUnXb_ (MacDev)
文章代碼(AID): #1CzUnXb_ (MacDev)