Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 对于UIViewController,哪些方法应该是;“释放”;并设为「;“无”;出口/实例变量?_Iphone_Objective C_Ios_Memory Management_Uiviewcontroller - Fatal编程技术网

Iphone 对于UIViewController,哪些方法应该是;“释放”;并设为「;“无”;出口/实例变量?

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

对于UIViewController,哪些方法应该“release”并将outlets/instance变量设置为“nil”

在“viewDidUnload”和“dealloc”中,我应该放哪些方法:

  • 类中Outlet或其他成员变量的“释放”,以及
  • 中的“xxx=nil”(即设置为nil)

  • 我认为在
    -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中通常不是这样。然而,有些人可能不同意。