在Objective-C中何时使用“self”?
现在我在Objective-C已经5个多月了,我的第一个应用程序也在应用程序商店发布了,但我仍然对该语言的核心功能有疑问 我应该何时使用在Objective-C中何时使用“self”?,objective-c,self,Objective C,Self,现在我在Objective-C已经5个多月了,我的第一个应用程序也在应用程序商店发布了,但我仍然对该语言的核心功能有疑问 我应该何时使用self访问IVAR,何时不使用 释放插座时,在viewDidUnload中写入self.outlet=nil,而在dealloc中写入[outlet release]。为什么?您在引用@属性时使用self。 通常它会被“合成” 如果引用的是“私有”变量,则不使用self。通常,我使用UI元素(如UIButtons)的属性,或者使用希望从其他类轻松访问的元素的属
self
访问IVAR,何时不使用
释放插座时,在viewDidUnload中写入
self.outlet=nil
,而在dealloc
中写入[outlet release]
。为什么?您在引用@属性时使用self。
通常它会被“合成”
如果引用的是“私有”变量,则不使用self。通常,我使用UI元素(如UIButtons)的属性,或者使用希望从其他类轻松访问的元素的属性。
可以使用@protected修饰符显式强制可见性。但是,您不能使用Objective-C中不存在的私有方法
关于nil、release和dealoc的部分与“self”的使用无关。你释放你保留的,你没有自动恢复的
你应该读这本书,它写得很好,很有启发性。你使用self。当您访问所处类的属性时(因此是self)。基本上,当您希望保留值时使用self,但仅当您在属性定义中具有retain时才使用self
release仅释放您保留的对象。你不应该释放你没有保留的东西,因为它会导致崩溃(僵尸对象)。当你编写
self.outlet=nil
方法[self-setOutlet:nil]代码>被调用。当您写入outlet=nil时代码>您可以直接访问变量outlet
如果您使用@outlet代码>然后自动生成方法setOutlet:
,如果您将属性声明为@property(retain)NSObject outlet,则在分配新对象之前释放对象代码> 了解objective c中getter setter方法的属性非常重要
Understanding your (Objective-C) self
-1是的,存在私有变量,请参见@private
。您关于使用nil、release和dealoc的推理也不正确self.foo
是一个属性。将其设置为nil将释放其上一个值foo
是一个变量,将其设置为nil会导致旧值泄漏。区别在于,将属性设置为nil实际上是发送一条消息,该消息会导致旧值与其他内容一起被释放。@JeremyP您完全正确。我的记忆力不好:/但是,我关于使用nil的推理并没有停止(我的应用程序不会泄漏),我认为我的用词和你自己说的一模一样。我可能解释得不好,或者你可能得出了错误的结论。无论如何,+1用于刷新我对私有修改器的记忆。我删除了否决票,因为你修复了我否决票的部分。我仍然认为你有关于使用自我困惑的东西。到目前为止,最好的答案是。