何时何时不使用Objective-C中的指针

and*_*ndy 24 pointers objective-c

我知道有很多关于指针的问题,特别是现在的Objective-C.但我正在寻找一些更高级别的答案来帮助我理解Objective-C中的范例.

我听说有人说在Objective-C中使用指针是一个问题或经验,即有些类要求你使用指针,有些则不然.这是真的?这是在Objective-C中使用指针的程度.

基本上,除了想要将引用变量显式传递给方法之外,Objective-C中指针的规则是什么?

bbu*_*bum 39

总是在引用堆上的东西时使用指针,有时候,但通常不是在引用堆栈上的东西时.

由于Objective-C对象总是在堆上分配(除了Blocks,但这与本讨论正交),因此总是使用指向Objective-C对象的指针.无论是idClass类型是真正的指针.

不使用指针的地方是某些原始类型简单结构. NSPoint,NSRange,int,NSUInteger,等...都是通常通过堆栈访问,通常你不使用指针.

至于Why the * in Objective-C?你可能会发现这个感兴趣的问题.

  • 如果您在Xcode中双击cmd,它会带您进入定义.如果那个定义类似于`Foo*bar`并且你cmd-双击`Foo`,它会带你到*那个*的定义.您将很快了解哪些类型是什么. (5认同)
  • +1谢谢bbum,很棒的答案.在Cocoa框架中工作时,您如何知道哪些类型是原始的?更重要的是,如果错误地使用指针,是否会在编译时捕获错误? (2认同)