理解自我。在目标C中

时间:2010-10-25 20:14:01

标签: objective-c

自从我在Objective-C中编程以来已经过了3天,我仍然不太了解自我的概念。

我们什么时候应该使用自己。在实现代码中? 如果我将其定义为属性,我理解正确,那么我应该使用self。 但问题是为什么呢?我一直在阅读许多i-phone编程书籍,但似乎没有一本书给我一个强有力的答案。在java等其他编程语言中,self是否与此相同?

5 个答案:

答案 0 :(得分:3)

Objective C中的

self是指向当前消息的接收者的指针,因此它与Java中的this非常相似。

答案 1 :(得分:2)

self大致相当于其他语言中的this。此外,Objective-C 2.0中引入的点符号可以掩盖实际发生的事情。

self.foo = 4;
NSInteger someInt = self.foo;

以上与

相同
[self setFoo:4];
NSInteger someInt = [self foo];

self实际上只是一个自动传递给类和实例方法的变量。这是可以做到的:

self = [super init];
if (!self) return nil;

答案 2 :(得分:1)

Objective-C中的

self与Java中的this相同。

在这两种情况下,selfthis是对象内部的特殊变量,它引用对象本身。在访问属性或在同一对象上调用方法时,或在调用外部方法将对象作为参数传递时,请使用此方法。

如果您认为selfthis是同一件事,那么您将不会遇到任何问题。当然,您实际上不能互换使用它们,因为每种语言只能识别其中一种语言。

答案 3 :(得分:1)

如果您习惯使用Java编程,self视为Java的this
 例如,当您想要引用与该类有关的内容时,您可以在类中使用self - 例如,在类Car self.wheels中。

答案 4 :(得分:1)

如果已定义属性并使用self.foo = bar合成它将调用已为您生成的setter。如果您只是执行foo = bar,则可以在不通过setter方法的情况下分配给变量。这意味着如果使用retain或synchronization声明属性,则不会利用retain。