【问题标题】:When to and when not to use pointers in Objective-C在 Objective-C 中何时以及何时不使用指针
【发布时间】:2011-07-01 18:08:10
【问题描述】:

我知道有很多关于指针的问题,尤其是现在对于 Objective-C。但我正在寻找一些更高层次的答案来帮助我理解 Objective-C 中的范式。

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

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

【问题讨论】:

  • 我几乎将指针用于除基元之外的所有内容。如果它是intNSIntegerCGFloat 或任何类似的 - 我不使用星号。否则我给它星。虽然可能有人可以更好地解释它......

标签: objective-c pointers


【解决方案1】:

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

由于 Objective-C 对象总是在堆上分配(块除外,但这与本文的讨论是正交的),所以您总是使用指向 Objective-C 对象的指针。 idClass 类型都是指针。

您不使用指针的地方是某些原始类型简单结构NSPointNSRangeintNSUInteger 等...都通常通过堆栈访问,通常您不使用指针。

至于Why the * in Objective-C?,你可能会发现这个question of interest

【讨论】:

  • +1 谢谢 bbum,很好的回答。在 Cocoa 框架中工作时,您如何知道哪些类型是原始类型。更重要的是,如果不正确地使用指针,会在编译时发现错误吗?
  • 如果你在 Xcode 中用 cmd 双击某些东西,它会带你去定义。如果该定义类似于Foo *bar,并且您在cmd 中双击Foo,它将带您进入that 的定义。您将很快了解哪些类型是什么。
  • 好吧,bbum,我自己也一直想知道这一点,你的解释非常清楚和中肯! +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-27
  • 2012-08-26
  • 2011-01-11
  • 2011-04-06
  • 2015-09-03
  • 1970-01-01
  • 2012-02-25
相关资源
最近更新 更多