Iphone 我的UIImageView中的大图像导致我的UINavigationController堆栈中的较低视图被释放。。。我该如何解决这个问题?
以下是我的问题的一些背景。。。。使用iOS 5作为我的iPhone应用程序的目标,ARC开启: 我有一个应用程序有一个Iphone 我的UIImageView中的大图像导致我的UINavigationController堆栈中的较低视图被释放。。。我该如何解决这个问题?,iphone,objective-c,ios,xcode,cocoa-touch,Iphone,Objective C,Ios,Xcode,Cocoa Touch,以下是我的问题的一些背景。。。。使用iOS 5作为我的iPhone应用程序的目标,ARC开启: 我有一个应用程序有一个UINavigationController。堆栈上有多个视图被推到顶部。显示的最后一个视图是带有Google Images网站的UIWebView,用户可以选择图像并将其发送回导航堆栈中上一个视图上的UIImageView。然后,用户可以回击,然后在上一个视图上点击SaveUIBarButton将图像本地保存到设备上。以下是堆栈的外观: MainView->DetailsVie
UINavigationController
。堆栈上有多个视图被推到顶部。显示的最后一个视图是带有Google Images网站的UIWebView
,用户可以选择图像并将其发送回导航堆栈中上一个视图上的UIImageView
。然后,用户可以回击,然后在上一个视图上点击SaveUIBarButton
将图像本地保存到设备上。以下是堆栈的外观:
MainView->DetailsView(右上角带有SaveUIBarButton
)->ImageDisplayView>WebView(带有谷歌图像)
网站(已加载)
问题是,当用户使用Google Images Mobile上的View Full image(查看完整图像)按钮从Google Images(谷歌图像)中选择一个大图像(比如5MB图像)时,会抛出一个内存警告,并释放下面的视图。因此,当用户使用Save按钮返回DetailsView时,Save按钮现在不见了。这是因为调用了didReceiveMemoryWarning
所以我的问题是
若要亲自尝试此问题,请在空白应用程序中创建一个
UIWebView
,然后将Google Images网站加载到其中。将其安装到您的设备上(3GS或更低版本会使问题更快地出现),只需将完整图像加载到浏览器中或从浏览器中取出即可。。。您最终会在调试控制台中收到警告。查看iOS文档中的“响应iOS中的内存不足警告”,其中说明“视图控制器自动清除当前屏幕外的所有视图”,还可以查看“视图控制器生命周期”。视图控制器将获得viewWillUnload:和viewDidUnload:消息。下次需要视图时,您必须使用loadView(如果不使用故事板)重新创建视图
具体回答您的问题:
查看iOS文档中的“响应iOS中的内存不足警告”,其中说明“视图控制器自动清除当前屏幕外的任何视图”,还可以查看“视图控制器生命周期”。视图控制器将获得viewWillUnload:和viewDidUnload:消息。下次需要视图时,您必须使用loadView(如果不使用故事板)重新创建视图 具体回答您的问题:
就连苹果的safari也有这样的问题。我在timeline视图中看到了移动版的Facebook crash safari,就连苹果的safari也有问题。我在时间轴视图中看到了Facebook crash safari的移动版。如果不使用故事板或常规nib。在这两种情况下,都应该在viewDidLoad中重新设置视图+1用于文档参考和生命周期概要。如果不使用故事板或常规nib。在这两种情况下,都应该在viewDidLoad中重新设置视图+1用于文档参考和生命周期概要。