所以我试图从VB.NET到Objective-C的可怕跳跃。
我唯一的卷发体验是一个小小的ActionScript 3 ......我很难掌握*字符的使用。
问题1:
我正在使用的教程将这两行紧挨着......
IBOutlet UIPickerView *pickerView;
NSArray* myArray;
我的理解是*表示基本上是一种引用类型。为什么它在第一行的变量名前面,而在第二行的类名呢?
关于类声明的问题二:
@implementation {
Why is some code here
}
and other code here?
@end
答案 0 :(得分:6)
这是一大堆蠕虫 - 答案是那里的语法是等价的,你可以随心所欲。有些人对于其中一个人非常虔诚,但编译器并不关心。
我认为你的意思是@interface
,对吗?大括号内的代码只是一个实例变量列表。在大括号之外是你放置方法声明的地方。
如果你想学习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;