分配对象指针

时间:2011-08-24 20:17:52

标签: objective-c pointers variable-assignment

这个指针赋值是否正确?

customclass.somearray = &*otherarray;

其中somearrayotherarrayNSArray个对象。 如果没有,我该如何解决我的问题:
我想与otherarray分享这个customclass.somearray对象。我想要所有的改变 已将customclass.somearray发送至原始otherarray。 这样做,它的工作原理。我只想问,这是对的吗?

2 个答案:

答案 0 :(得分:3)

你的两个变量是同一类型的指针,所以只需将一个指定给另一个:

customclass.somearray = otherarray;

你写这篇文章的方式是不必要的。使用解引用运算符*实际上为您提供了指针的“内容”。运算符&的地址相应地为您提供了应用它的地址。指针otherarray包含一个地址。如果您取消引用该地址,然后取出该地址,则最终会回到您开始的地方。

请注意,此分配的左侧是属性访问(假设customclass也是对象,而不仅仅是struct)。这意味着编译器会将您的表达式更改为:

[customclass setSomearray:&*otherarray];
// And my version will be changed into:
[customclass setSomearray:otherarray];

也就是说,它变成了方法调用而不是简单的赋值。但是,这不会影响您应该使用的语法。

答案 1 :(得分:2)

在Objective-C中工作时,你永远不会直接处理对象,但总是通过指针引用它们。总是。例如,在C ++中,您可以在堆栈上声明实际对象,但在Objective-C中永远不会这样做。所以,如果你有:

NSArray *otherArray = [NSArray arrayWithObjects:@"foo", @"bar", nil];

然后otherArray是指向NSArray实例的指针。同样,您的somearray属性类型为NSArray*,因此类型将匹配,您可以将其中一个分配给另一个:

customclass.somearray = otherarray;

希望有所帮助。