3

我刚刚开始使用Objective C,虽然我对速度和学习曲线做得很好(我没有C背景) - 我不理解一个也是C ++一部分的概念 - 指针!

好的 - 我知道指针指向实际变量的物理位置,而不是变量本身的值。这到底什么时候能派上用场?

另外,什么时候使用它们,什么时候不使用它们?

我已经用谷歌搜索了很多,但我遇到的每个指南似乎都假设我是火箭科学博士。

有人可以用一个简单的例子来解释一下吗?

4

3 回答 3

2

使用指针的主要原因之一是节省内存。例如,如果您将数组传递给函数,最好将内存中的地址发送给函数,而不是发送值。

如果您继续使用 c 或其他较低级别的语言,那么您会发现数组和指针几乎可以互换。(C 风格的数组,不是 objc 中的 NSMutableArrays 或 c++ 中的向量或 c# 中的列表等)

于 2012-08-22T09:45:00.333 回答
2

虽然它们当然是 C 指针,但我强烈建议将它们理解为对对象的引用。

您要么创建一个对象,要么从某个地方接收它,并将对该对象的引用存储在变量中。

当您将对对象的引用传递给某个函数或方法时,该方法可以访问您传递的对象。它不一定要处理数据的副本。如果它对对象的属性进行了更改(只要通过 poperty 声明和内容允许),那么您的引用所指的对象就会发生更改。

您当然可以复制它并在您认为合适时继续使用该副本。在这种情况下,原始对象保持不变。

当您真正遇到必须使用 c 样式指针的情况时,您最好退后一步并理解 C。我认为来自 Objecive-C 背景的理解 c 样式指针是不明智的。清除您的想法并从头开始学习 C,然后在非常罕见的情况下使用新的知识,您必须在 Objective-C 项目中处理这些基本数据类型。

于 2012-08-22T10:09:51.747 回答
1

这是一个简单的原因:

想象一下,你有一个非常大的物体。- 当你将它传递给一个函数时,你真的想复制和复制整个对象吗?- 这将占用大量 CPU 和内存。

通过使用指针,您不必在每次传递原始对象时都复制它。(当然,另一方面是,如果您更改函数中的对象,它也会更改原始对象)。

于 2012-08-22T10:36:30.533 回答