我知道有很多关于指针的问题,尤其是针对Objective-C。但我正在寻找一些更高层次的答案,以帮助我理解Objective-C中的范例。
我听说有些人说,在Objective-C中使用指针是一种经验问题,即某些类要求您使用指针,而另一些则不需要。这是真的吗?除了当您想要明确地将引用变量传递给方法时,还有哪些关于指针在Objective-C中的规则呢?
我知道有很多关于指针的问题,尤其是针对Objective-C。但我正在寻找一些更高层次的答案,以帮助我理解Objective-C中的范例。
我听说有些人说,在Objective-C中使用指针是一种经验问题,即某些类要求您使用指针,而另一些则不需要。这是真的吗?除了当您想要明确地将引用变量传递给方法时,还有哪些关于指针在Objective-C中的规则呢?
当引用堆上的内容时,总是使用指针。当引用栈上的内容时有时候会使用指针,但通常不需要。
由于 Objective-C 对象始终分配在堆上(除了 Blocks,但这与本讨论无关),因此您总是使用指向 Objective-C 对象的指针。id 和 Class 类型都是实际上是指针。
对于某些基本类型和简单结构体,您不使用指针。NSPoint、NSRange、int、NSUInteger 等通常通过栈访问,通常不需要使用指针。
至于“为什么 Objective-C 中使用 * ”,您可能会发现这个问题很有趣。
Foo *bar
这样的东西,而你再次使用cmd+双击的方式点击Foo
,它会带你到那个定义的地方。你很快就会熟悉哪些类型是什么。 - bbum
int
、NSInteger
、CGFloat
或者类似的数据类型 - 我不会使用星号。否则,我就会在变量名前面加星号。虽然可能有人可以更好地解释这个问题...... - Aurum Aquila