【发布时间】:2010-05-07 13:32:55
【问题描述】:
在 Objective-C 中是否有必要使用“self”,或者可能只是一个好习惯?我已经从一直使用它变成了根本不使用它,我似乎并没有真正注意到任何区别。不就是隐含的吗?
【问题讨论】:
-
你的意思是从'self.property = value'变成'property = value'吗?
标签: objective-c iphone
在 Objective-C 中是否有必要使用“self”,或者可能只是一个好习惯?我已经从一直使用它变成了根本不使用它,我似乎并没有真正注意到任何区别。不就是隐含的吗?
【问题讨论】:
标签: objective-c iphone
self 是必需的,如果您希望一个对象发送消息到它self。通过 getter/setter 访问属性有时也很有用,在这种情况下,您还需要使用self,如self.propertyname 或self.propertyname = value。 (这些不等同于propertyname 或propertyname = value。
【讨论】:
引用实例变量时没有必要。当您想将当前对象的引用传递给另一个方法时,例如设置委托时,这是必要的:
[someObj setDelegate:self];
在当前对象上调用同一个类中的方法时也是必须的:
[self doMethod]
【讨论】:
对于处理变量,这取决于。如果您想使用合成的 getter 或 setter,请在 self 中使用点符号。
self.someProperty = @"blah"; //Uses the setter
someProperty = @"blah"; //Directly sets the variable
【讨论】:
self.someiVar = @"this" 不能访问实例变量;您将使用self->someiVar = @"this"(在类的实现中不需要self-> 位)。因此,如果您了解自己在做什么和不做什么,请使用点符号。
实际上并不是每次都需要,但这是一个很好的做法,因为它可以让其他人更容易阅读您的代码。
当你在不同的类中有同名的对象时,“self”键会告诉你的软件你正在引用同一个类中的对象。
这通常发生在较大的项目中。
【讨论】:
是的,因为 Objective C 没有像 C/C++ 这样的方法调用,而是使用消息发送,self for 在这样的上下文中
[自己做某事];和 self.myProperty;
是必要的。
如果您正在访问 ivar,则不需要 self。
希望对您有所帮助。
-简历
【讨论】: