什么时候在Objective-C中使用`self`?

时间:2011-08-31 08:57:01

标签: objective-c self

现在已经超过5个月,我在Objective-C,我也在App Store中发布了我的第一个应用程序,但我仍然怀疑该语言的核心功能。

我应该何时使用self访问iVars,何时不使用?

在发布插座时,您在viewDidUnload中编写self.outlet = nil,而在dealloc中编写[outlet release]。为什么呢?

4 个答案:

答案 0 :(得分:6)

当您编写self.outlet = nil时,会调用方法[self setOutlet:nil];。当您撰写outlet = nil;时,您可以直接访问变量outlet

如果使用@synthesize outlet;,则会自动生成方法setOutlet:,如果您将属性声明为@property (retain) NSObject outlet;,则会在分配新对象之前释放对象。

答案 1 :(得分:3)

非常重要的博客,了解目标c中的属性getter-setter方法

                Understanding your (Objective-C) self

http://useyourloaf.com/blog/2011/2/8/understanding-your-objective-c-self.html

答案 2 :(得分:1)

当您引用@property时,您使用self。 通常它会被@ synthesize'd。

如果您引用“私人”变量,则不使用self。通常,我使用UI元素(如UIButtons)的属性或我希望从其他类可以轻松访问的元素。 您可以使用@private,@ protected修饰符来明确强制实施可见性。但是,您不能使用Objective-C中不存在的私有方法。

关于nil,release和dealloc的部分与“self”的使用无关。你释放你保留的东西,你没有自动恢复的东西。

你应该阅读Objective-C guide,它写得很好,很有启发性。

答案 3 :(得分:0)

你使用自我。当你访问你所在的类的属性时(因此自己)。基本上,当您想要保留值时,您可以使用self,但仅当您保留在属性定义中时才使用self。

发布只释放您保留的对象。你不应该发布你没有保留的东西,因为它会导致崩溃(僵尸对象)。