Objective-C的新用户 - >快速提问

时间:2010-08-02 16:38:51

标签: iphone objective-c xcode interface-builder

所以我试图从VB.NET到Objective-C的可怕跳跃。

我唯一的卷发体验是一个小小的ActionScript 3 ......我很难掌握*字符的使用。

问题1:

我正在使用的教程将这两行紧挨着......

IBOutlet UIPickerView *pickerView;
NSArray* myArray;

我的理解是*表示基本上是一种引用类型。为什么它在第一行的变量名前面,而在第二行的类名呢?

关于类声明的问题二:

@implementation {
 Why is some code here
}

and other code here?
@end

3 个答案:

答案 0 :(得分:6)

  1. 这是一大堆蠕虫 - 答案是那里的语法是等价的,你可以随心所欲。有些人对于其中一个人非常虔诚,但编译器并不关心。

  2. 我认为你的意思是@interface,对吗?大括号内的代码只是一个实例变量列表。在大括号之外是你放置方法声明的地方。

  3. 如果你想学习Objective-C,那么首先去学习C可能是值得的。然后,当您理解语法和C语言概念(如指针和前向声明)时,您可以非常快速地获取Objective-C。

答案 1 :(得分:2)

只要在 类型之后,将*放在变量声明中并不重要。

这实际上是错误的:

@implementation x {
}

@end

您只能使用@interface

执行此操作
@interface x {
  //ivars here...
}

//method declarations here...

@end

答案 2 :(得分:0)

“*”周围的空格是无关紧要的,所以对于编译器,你给出的两行是相同的 - 指向对象的两个指针(你调用它们的引用类型)。

基本上,对象通常需要“”,其中原始类型(和struct之类的东西)不需要 - 所以例如CGRect不会使用“”。

然而,为了让你更加困惑,有一个对象“id”的通用引用,它不需要(也不能有)* - 你会声明一个像这样的变量:

id delegate;