Iphone didReceiveMemoryWarning(在iOS 3.0中)

Iphone didReceiveMemoryWarning(在iOS 3.0中),iphone,ios,ipad,Iphone,Ios,Ipad,浏览didReceiveMemoryWarning的文档: 请注意它是怎么说的,我引用: 在iOS 3.0及更高版本中,如果您的视图 控制器保存对对象的引用 在视图层次结构中,您应该 在中释放这些引用 取而代之的是viewDidUnload方法。在里面 iOS的早期版本,您应该 继续将其从该文件中释放 方法 为什么会这样?iOS 3.0中的哪些变化使得视图层次结构视图不能在didReceiveMemoryWarning中直接清理?我无法想象是什么让这变得危险或糟糕 介绍了iOS 3.0中的vi

浏览didReceiveMemoryWarning的文档:

请注意它是怎么说的,我引用:

在iOS 3.0及更高版本中,如果您的视图 控制器保存对对象的引用 在视图层次结构中,您应该 在中释放这些引用 取而代之的是viewDidUnload方法。在里面 iOS的早期版本,您应该 继续将其从该文件中释放 方法

为什么会这样?iOS 3.0中的哪些变化使得视图层次结构视图不能在didReceiveMemoryWarning中直接清理?我无法想象是什么让这变得危险或糟糕


介绍了iOS 3.0中的
viewDidUnload
viewDidLoad
中的任何想法

如果你看他们的描述,你会发现:

视图控制器将其关联视图加载到内存后调用viewDidLoad。无论视图是存储在nib文件中还是在loadView方法中以编程方式创建,都会调用此方法

这意味着,无论是从Nib加载视图时,还是以编程方式创建视图时(框架在适当的时候调用
loadView
),您都可以在一个点上访问新视图并完成其初始化,如添加子视图或任何您需要的操作

viewDidLoad
相对应的是
viewDidUnload
,您可以这样覆盖它:

-(void)viewDidUnload {
     <do all the necessary clean up>
    [super viewDidUnload];
}
-(void)viewDidUnload{
[超级视频下载];
}
因此,您只有一个清理点,并且不需要在
didReceiveMemoryWarning
中执行任何特定的清理,因为每当解除分配视图时,即由于
didReceiveMemoryWarning
而解除分配视图时,都会调用
viewDidUnload


这与iOS 3.0之前的情况不同,在iOS 3.0中,您必须提出自己的方案来完成初始化和清理,而无需框架的支持,即当
direceivememorywarning
导致视图被释放时,您的清理方法没有自动调用,您必须复制清理代码(并在
didReceiveMemoryWarning
中明确执行清理)。iOS 3.0中引入了
viewDidUnload
viewDidLoad

如果你看他们的描述,你会发现:

视图控制器将其关联视图加载到内存后调用viewDidLoad。无论视图是存储在nib文件中还是在loadView方法中以编程方式创建,都会调用此方法

这意味着,无论是从Nib加载视图时,还是以编程方式创建视图时(框架在适当的时候调用
loadView
),您都可以在一个点上访问新视图并完成其初始化,如添加子视图或任何您需要的操作

viewDidLoad
相对应的是
viewDidUnload
,您可以这样覆盖它:

-(void)viewDidUnload {
     <do all the necessary clean up>
    [super viewDidUnload];
}
-(void)viewDidUnload{
[超级视频下载];
}
因此,您只有一个清理点,并且不需要在
didReceiveMemoryWarning
中执行任何特定的清理,因为每当解除分配视图时,即由于
didReceiveMemoryWarning
而解除分配视图时,都会调用
viewDidUnload


这与iOS 3.0之前的情况不同,在iOS 3.0中,您必须提出自己的方案来完成初始化和清理,而无需框架的支持,即当
direceivememorywarning
导致视图被释放时,您的清理方法没有自动调用,您必须复制清理代码(并在
didReceiveMemoryWarning
中显式执行清理)。

哦,对了!哇,我怎么不想检查viewDidLoad/viewDidUnload在3.0之前是否存在?我想它们似乎是整个过程中不可或缺的一部分,它们一定一直存在于2.0版本。但显然不是,呵呵。不过,幸好他们现在在那里,3.0之前的清理方法确实听起来有点笨重。万分感谢。哦,对了!哇,我怎么不想检查viewDidLoad/viewDidUnload在3.0之前是否存在?我想它们似乎是整个过程中不可或缺的一部分,它们一定一直存在于2.0版本。但显然不是,呵呵。不过,幸好他们现在在那里,3.0之前的清理方法确实听起来有点笨重。非常感谢。