2010-05-07 37 views
0

在此代碼中,星號是否與對象類型相鄰?是否有任何理由?我看到這個使用的方式有點困惑。有些時候,它看起來像這樣:使用指針時的代碼格式化

NSString* stringBefore; 

,有時是這樣的:

NSString *stringBefore; 

是否有區別?或者正確或錯誤的方式來做到這一點?

謝謝

+0

可能的重複http://stackoverflow.com/questions/2452335/asterisk-sometimes-on-variable-type-sometimes-on-variable-name-why – 2010-05-07 21:29:58

回答

4

它沒有區別。

它只是一個指示作者如何精通書寫和閱讀Objective-C。傳統的標準是把它寫爲:

NSString *stringBefore; 
+0

你可以很熟練,並選擇不遵循標準。 – progrmr 2010-05-07 22:18:27

+0

這對我來說總是有意義的,直到作者做了以下其中一個: UISwitch * whichSwitch =(UISwitch *)sender; 括號中的一種爲我扔。爲什麼星號與類型分組? – 2010-05-08 04:03:28

+0

因爲它是類型的一部分 - 就像一個「指向NSString的指針」。而不遵循標準的程序員被稱爲「糟糕的程序員」 - 當然,除非他們有充分的理由。 – 2010-05-08 06:13:13

10

我使用*附近的變量名,而不是類型,因爲如果你聲明是這樣的:

int *i, j; 

i將是一個指針int ,並且j將是int

如果使用其他的語法:

int* i, j; 

你可能會認爲這兩個ij是指針的時候都沒有。

這就是說,我不使用也不推薦在同一行中聲明一個指針和一個非指針變量,就像這個例子。