面向对象C /面向对象的指针

时间:2010-10-22 09:49:15

标签: objective-c oop pointers

我一直在玩客观C,我发现它是一种很棒的语言..

来自C#我发现指针有点难,但现在我理解这个概念以及如何使用它们。

即:

MyObject* x = [[myObject alloc] callinitializer];

在堆上创建一个新对象,在堆栈​​上创建一个指针..

但有人可以解释为什么要访问您执行此操作的对象属性:

[x setsomeprop: @"I Like Pizza"];

而不是:

[*x setsomeprop: @"With Pineapple"];
没有解引用星的

我们只是使用指针而不是对象本身??

Confuesd!

谢谢

丹尼尔

2 个答案:

答案 0 :(得分:6)

没有。括号语法是专门用于对象的语言功能 - 它会自动取消引用指针。

答案 1 :(得分:0)

部分原因是方法调度在Objective-C等动态语言中的运行方式。在Objective-C中使用解除引用的对象指针几乎没有任何用处。

鉴于所有对象都存储在堆上,并使用retain / release(或通过垃圾收集)管理自己的生命周期,指向对象的指针正是您想要在99%的情况下使用的。

事实证明,在C#和Java中使用的机制基本相同 - 对象引用是指针,这就是为什么将一个引用分配给另一个引用使它们指向同一个对象,而不是复制对象。