2011-11-04 55 views
1

可能重複:
Style: Dot notation vs. message notation in Objective-C 2.0代碼風格:訪問財產

在蘋果文檔的NSArray它說: 「實例方法>」 「數」。所以,通常我會寫[[NSArray array] count]。然而,[NSArray array].count工作得很好......最近我發現UIScreen.mainScreen.bounds也被接受。 mainScreenUIScreen的分類方法。

任何人都想過要使用哪種風格(以及爲什麼)?請給出意見。

+0

+1對於一個好問題,但投票關閉,因爲它實際上是重複的。更重要的是,重複Q中的答案顯着更好。 – Caleb

+0

@Caleb,你說的對,他們是。這個問題應該是第一個來源。 –

回答

3

IMO,點語法意味着一定的被動性;使用它應該不會有明顯的副作用。將NSArray的-count方法作爲屬性對待也是可以的,儘管它實際上並不是一個屬性(如果在創建NSArray時屬性已成爲語言的一部分,它可能是屬性的一部分),但如果someMutableArray.removeLastObject會冒犯我的敏感性, d可能工作得很好。

但是,關於點符號的一件事情是,您不能將Objective-C的點符號與作業左側的C點符號混合使用。換句話說,不要嘗試這個辦法:

myView.bounds.origin.x = 50. 

相反,您必須說:

CGRect newBounds = myView.bounds; 
newBounds.origin.x = 50; 
myView.bounds = newBounds; 
3

爲點語法僅僅是調用方法的語法糖。所以[NSArray array].count是相同的[[NSArray array] count],並UIScreen.mainScreen是相同的[UIScreen mainScreen]

你不應該使用點語法比屬性訪問的任何其他。對於物業訪問,選擇是個人風格的問題。

+2

對於像屬性一樣行爲的方法,我認爲可以使用點表示法,即使它們沒有聲明爲屬性。 NSArray的「count」方法就是一個很好的例子。 NSDictionary的「allKeys」和「allValues」是另外兩個。 – Caleb

+0

@Caleb,我可以理解那個意見。我是從蘋果支持的官方政策角度發言的。我個人避免使用點語法,所以對我來說這不是一個問題。 –

+1

我不知道蘋果在這個問題上有明確的官方聲明。你知道嗎?正如[Objective-C編程語言](http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocObjectsClasses.html#//apple_ref/doc/uid/TP30001163- CH11-SW17)中,點語法用於訪問器,但我不認爲這意味着您必須將使用限制爲使用@property語法聲明的屬性。 – Caleb