Iphone 对于UIViewController,哪些方法应该是;“释放”;并设为「;“无”;出口/实例变量?
对于UIViewController,哪些方法应该“release”并将outlets/instance变量设置为“nil” 在“viewDidUnload”和“dealloc”中,我应该放哪些方法:Iphone 对于UIViewController,哪些方法应该是;“释放”;并设为「;“无”;出口/实例变量?,iphone,objective-c,ios,memory-management,uiviewcontroller,Iphone,Objective C,Ios,Memory Management,Uiviewcontroller,对于UIViewController,哪些方法应该“release”并将outlets/instance变量设置为“nil” 在“viewDidUnload”和“dealloc”中,我应该放哪些方法: 类中Outlet或其他成员变量的“释放”,以及 中的“xxx=nil”(即设置为nil) 我认为在-dealloc中,您应该直接使用IVAR;在其他情况下,如-viewDidUnload,您将希望取消属性。我认为在-dealloc中,您应该直接使用IVAR;在其他情况下,如-viewDidUnlo
我认为在
-dealloc
中,您应该直接使用IVAR;在其他情况下,如-viewDidUnload
,您将希望取消属性。我认为在-dealloc
中,您应该直接使用IVAR;在其他情况下,如-viewDidUnload
,您将希望禁用属性。在viewDidUnload中,典型的做法是使用访问器禁用嵌入视图控制器视图中的任何对象-按钮、视图、文本字段、视图层次结构中UIView的任何子体:
self.myButton = nil;
在dealloc中,应直接释放所有保留变量,包括子视图:
[myButton release];
[someStateObject release];
在viewDidUnload中,典型的做法是使用访问器将嵌入视图控制器视图中的任何对象(按钮、视图、文本字段、UIView的任何子体,可能位于视图层次结构中)置零:
self.myButton = nil;
在dealloc中,应直接释放所有保留变量,包括子视图:
[myButton release];
[someStateObject release];
谢谢-我有控制器,我在dealloc中“释放”然后“置零”变量-这样可以吗?如果没有任何想法,可能会出现什么问题?为什么这些问题应该采取不同的做法?通常,如果我有保留属性,我倾向于总是将它们置零,因为在双重释放的情况下更安全。你能解释一下self.myButton=nil;是否会导致问题?@Greg在dealloc中,如果其他代码试图访问变量但未保留该值,有些人在释放变量后会将其置为零。那样做没有什么错。就我个人而言,我认为这太过分了。@skorulis您不应该在dealloc中使用访问器。您不能假设您确切地知道访问器内部发生了什么,尤其是在您的类被扩展的情况下。访问器可能依赖于完全有效的对象,这在dealloc中通常不是这样。不过,有些人可能不同意。谢谢-我有控制器,我在dealloc中“释放”然后“nil”变量-这样可以吗?如果没有任何想法,可能会出现什么问题?为什么这些问题应该采取不同的做法?通常,如果我有保留属性,我倾向于总是将它们置零,因为在双重释放的情况下更安全。你能解释一下self.myButton=nil;是否会导致问题?@Greg在dealloc中,如果其他代码试图访问变量但未保留该值,有些人在释放变量后会将其置为零。那样做没有什么错。就我个人而言,我认为这太过分了。@skorulis您不应该在dealloc中使用访问器。您不能假设您确切地知道访问器内部发生了什么,尤其是在您的类被扩展的情况下。访问器可能依赖于完全有效的对象,这在dealloc中通常不是这样。然而,有些人可能不同意。