2010-03-16 65 views

回答

14

在確切的情況下,你顯示,沒有區別。有些人喜歡認爲tweetPickerUIPickerView *類型,即指向UIPickerView的指針。這些人通常把它寫成

UIPickerView* tweetPicker; 

,有人喜歡把它想*tweetPickerUIPickerView,就是取消引用指針給出了一個UIPickerView。這些人通常寫:

UIPickerView *tweetPicker; 

我更喜歡後者,因爲C(和Objective-C因爲)語法支持它更好。舉個例子來說,以下變量聲明:

int* a, b, c; 
int *a, *b, *c; 

乍一看,新手C(或Objective-C)的程序員可能會說「那些都是一樣的」,但他們沒有。在第一種情況下,bc是常規整數,在第二種情況下,它們是指針。 a是兩種情況下的指針。從我的角度來看,C中的「類型」的概念太弱了(用類型轉換等等的行爲),將這個概念向指針變量進一步擴展是瘋狂的 - 特別是對於自動化的&無聲轉換到void *id你得到。

+0

謝謝。請原諒無知,但什麼是「標量」? – Moshe 2010-03-16 05:53:23

+0

糟糕的使用'標量',抱歉 - C規範定義了這一點。我會編輯。 – 2010-03-16 05:57:57

+0

我只是說我喜歡帶變量名稱而不是類型的'*'。由於有關變量定義如何工作的規則,以另一種方式進行操作可能會導致代碼混淆(尤其對於新手而言)。 – 2010-03-16 06:01:01

1

星號表示該變量是一個指針。在Objective-C中,所有對象都通過指針表示。

就放在哪裏,這是一種風格的東西。我的個人風格實際上是在星號附近的空格。

UIPickerView * tweetPicker 

在所有三種情況下,它們意味着相同的事物,但具有不同的風格。

編輯:間距無關緊要,但位置在處理關鍵字的轉角情況下會發生,例如const引用常量指針或指向常量值的指針。但是你的問題與間距有關,這並不重要。

+0

真的嗎?位置並不重要?讓我檢查一下。編輯:工作,那麼爲什麼「Headfirst iPhone開發」指示我按照我發佈的方式去做? – Moshe 2010-03-16 05:46:55

+0

@Moshe,這個職位在某些情況下很重要。我會寫一個答案。 – 2010-03-16 05:47:48

+0

@Carl - 謝謝,我很期待閱讀它。 – Moshe 2010-03-16 05:49:55

相關問題