gpt4 book ai didi

iphone - didReceiveMemoryWarning(在 iOS 3.0+ 中)

转载 作者:行者123 更新时间:2023-11-29 13:48:40 40 4
gpt4 key购买 nike

查看 didReceiveMemoryWarning 的文档:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

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

In iOS 3.0 and later, if your view controller holds references to objects in the view hierarchy, you should release those references in the viewDidUnload method instead. In earlier versions of iOS, you should continue to release them from this method.

为什么会这样? iOS 3.0 中有什么变化使得 View 层次 View 不能直接在 didReceiveMemoryWarning 中清理?我无法想象是什么可能使那变得危险或糟糕。

有什么想法吗?

最佳答案

在 iOS 3.0 中引入了 viewDidUnloadviewDidLoad

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

viewDidLoad called after the view controller has loaded its associated views into memory. This method is called regardless of whether the views were stored in a nib file or created programmatically in the loadView method.

这意味着,无论是从 Nib 加载 View ,还是以编程方式创建 View (并且框架在正确的时刻调用 loadView),您都有一个点你可以访问你的新 View 并完成它的初始化,比如添加 subview ,或者任何你需要的。

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

-(void)viewDidUnload {
<do all the necessary clean up>
[super viewDidUnload];
}

所以,你只有一个清理点,你不需要在 didReceiveMemoryWarning 中做任何特定的清理,因为每当调用 viewDidUnload View 被释放,即,当它由于 didReceiveMemoryWarning 而被释放时也是如此。

这与 iOS 3.0 之前发生的情况不同,在 iOS 3.0 中,您必须在没有框架支持的情况下提出自己的方案来完成初始化和清理,即当 didReceiveMemoryWarning 导致 View 将被释放,您的清理方法不会自动调用,您必须复制清理代码(并在 didReceiveMemoryWarning 中明确执行清理)。

关于iphone - didReceiveMemoryWarning(在 iOS 3.0+ 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6080502/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com