自从我在Objective-C中编程以来已经过了3天,我仍然不太了解自我的概念。
我们什么时候应该使用自己。在实现代码中? 如果我将其定义为属性,我理解正确,那么我应该使用self。 但问题是为什么呢?我一直在阅读许多i-phone编程书籍,但似乎没有一本书给我一个强有力的答案。在java等其他编程语言中,self是否与此相同?
答案 0 :(得分:3)
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)
self
与Java中的this
相同。
在这两种情况下,self
和this
是对象内部的特殊变量,它引用对象本身。在访问属性或在同一对象上调用方法时,或在调用外部方法将对象作为参数传递时,请使用此方法。
如果您认为self
和this
是同一件事,那么您将不会遇到任何问题。当然,您实际上不能互换使用它们,因为每种语言只能识别其中一种语言。
答案 3 :(得分:1)
如果您习惯使用Java编程,将self
视为Java的this
。
例如,当您想要引用与该类有关的内容时,您可以在类中使用self
- 例如,在类Car self.wheels
中。
答案 4 :(得分:1)
如果已定义属性并使用self.foo = bar合成它将调用已为您生成的setter。如果您只是执行foo = bar,则可以在不通过setter方法的情况下分配给变量。这意味着如果使用retain或synchronization声明属性,则不会利用retain。