Ios 如何从情节提要重新加载视图(或以其他方式管理内存不足的情况)?

Ios 如何从情节提要重新加载视图(或以其他方式管理内存不足的情况)?,ios,Ios,在开发我当前的应用程序时,我遇到了一些问题,我最终发现了一个内存不足的警告。内存不足的部分原因是我(自由地)使用UIWebView,这显然消耗了大量内存 我不认为这会是一个问题,因为当前不可见的视图应该在抛出低内存警告时消失,不幸的是,连接到UITabBarController的任何内容都将保留在继承权中,并且不会释放。通过手动释放(然后在viewwillbeen中重新创建)视图,我使事情正常工作。但它并不能完全解决内存警告问题 所以我需要做的是手动释放视图——以及与之连接的大量内存——然后恢复

在开发我当前的应用程序时,我遇到了一些问题,我最终发现了一个内存不足的警告。内存不足的部分原因是我(自由地)使用UIWebView,这显然消耗了大量内存

我不认为这会是一个问题,因为当前不可见的视图应该在抛出低内存警告时消失,不幸的是,连接到UITabBarController的任何内容都将保留在继承权中,并且不会释放。通过手动释放(然后在viewwillbeen中重新创建)视图,我使事情正常工作。但它并不能完全解决内存警告问题

所以我需要做的是手动释放视图——以及与之连接的大量内存——然后恢复它。因为我不想以编程方式构建它(这就是IB的用途!),所以我需要以某种方式从情节提要重新加载它


或者,我是个白痴,很明显,我的生活很轻松。

经过更多的实验,结果证明,一方面,我对视图生命周期的理解有点缺陷,另一方面,我的实验由于意外地让僵尸对象进入而受到污染


事实上,视图将在内存不足的情况下卸载其内容,并在以后重新加载——这是“viewDidLoad”和“viewDidUnload”的设计目的之一!像我读过的一些教程一样,将init代码放入其中是一个重大错误。init代码应该放在指定的初始值设定项中——即使这可能会让确定指定哪个初始值设定项很烦人。

经过更多的实验,结果表明,一方面,我对视图生命周期的理解有点缺陷,另一方面,我的实验由于不小心让僵尸物体进入而受到污染


事实上,视图将在内存不足的情况下卸载其内容,并在以后重新加载——这是“viewDidLoad”和“viewDidUnload”的设计目的之一!像我读过的一些教程一样,将init代码放入其中是一个重大错误。初始化代码应该放在指定的初始值设定项中——即使这可能会让确定指定了哪个初始值设定项很烦人。

如果在加载视图之前不需要数据,那么将初始化代码放在
-viewDidLoad
中也没那么糟糕;你只需要知道它可以被调用两次。还要注意的是,
-viewDidUnload
现在已被弃用,并且视图不再自动卸载到内存警告上,因为太多应用程序在内存警告上中断(具有讽刺意味的是,在iOS 4或5中,它们更改了内存警告,因此即使您重写了
-didReceiveMemoryWarning
,内存警告也会强制卸载视图).那么怎么做呢?我也有类似的问题:应用程序不断被男人踢出警告。。。故事板是空视图,然后我在ViewDidLoad上绘制wkWebKit。。。这(浏览)比明显膨胀的应用程序,它被踢了一次的背景。。。。我可以将整个内容转储到memwarning中吗?然后我如何告诉它在Willenter前台重新加载nib,这样它就可以通过viewDidLoad的动作来重建wkwebview(并可能重新激活上次low men通话时的url)谢谢you@danchik如果只有一个视图,而该视图本身正在触发内存警告,您需要做的是找出为什么要使用这么多内存并修复它。该视图中除了wkWebKit-New project/ios/single view之外没有其他内容。。。。然后将wkWebKit绘制到其中(在ViewDidLoad中),并约束它将其与视图中已有的准则对齐,然后导航到URL。。。这会在后台导致mem警告(如果在应用程序进入后台之前,您在该网页上花费了大量时间)。。。是的,网页是臃肿的,但这不是我可以控制的源代码,因为我知道,如果在加载视图之前不需要数据,那么将初始化代码放入
-viewdiload
并不是那么糟糕;你只需要知道它可以被调用两次。还要注意的是,
-viewDidUnload
现在已被弃用,并且视图不再自动卸载到内存警告上,因为太多应用程序在内存警告上中断(具有讽刺意味的是,在iOS 4或5中,它们更改了内存警告,因此即使您重写了
-didReceiveMemoryWarning
,内存警告也会强制卸载视图).那么怎么做呢?我也有类似的问题:应用程序不断被男人踢出警告。。。故事板是空视图,然后我在ViewDidLoad上绘制wkWebKit。。。这(浏览)比明显膨胀的应用程序,它被踢了一次的背景。。。。我可以将整个内容转储到memwarning中吗?然后我如何告诉它在Willenter前台重新加载nib,这样它就可以通过viewDidLoad的动作来重建wkwebview(并可能重新激活上次low men通话时的url)谢谢you@danchik如果只有一个视图,而该视图本身正在触发内存警告,您需要做的是找出为什么要使用这么多内存并修复它。该视图中除了wkWebKit-New project/ios/single view之外没有其他内容。。。。然后将wkWebKit绘制到其中(在ViewDidLoad中),并约束它将其与视图中已有的准则对齐,然后导航到URL。。。这会在后台导致mem警告(如果在应用程序进入后台之前,您在该网页上花费了大量时间)。。。是的,网页是臃肿的,但据我所知,这不是我可以控制的来源