2010-03-16 32 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

相关问题