Iphone 从后台返回时重新加载视图

Iphone 从后台返回时重新加载视图,iphone,ios,objective-c,cocoa-touch,Iphone,Ios,Objective C,Cocoa Touch,使用iphonesdk4.1。有时,当在iPhone3GS设备上从后台状态返回时,返回到的视图丢失了其中一个图像或标签。viewdide出现方法 从后台返回时也不会被调用。有没有办法强迫你 重新加载视图以便调用这些方法?如果您的应用程序由于试图在ram中存储过多数据(在本例中为图像)而收到内存警告,则通常会发生这种情况 要测试是否存在这种情况,您可以在didReceiveMemoryWarning消息中执行NSLog调用,也可以将UIImage子类化并扩展其Dealoc,并在其中放置一条NSLo

使用iphonesdk4.1。有时,当在iPhone3GS设备上从后台状态返回时,返回到的视图丢失了其中一个图像或标签。
viewdide出现
方法 从后台返回时也不会被调用。有没有办法强迫你
重新加载视图以便调用这些方法?

如果您的应用程序由于试图在ram中存储过多数据(在本例中为图像)而收到内存警告,则通常会发生这种情况

要测试是否存在这种情况,您可以在didReceiveMemoryWarning消息中执行NSLog调用,也可以将UIImage子类化并扩展其Dealoc,并在其中放置一条NSLog消息,如“Image being dealloced”,然后检查写入控制台的内容。如果您想在不在调试器(因此没有控制台)的情况下检查它,您可以在最前面的主窗口xib中创建一个调试UILabel(因此它总是可见的),其文本值是设置的,而不是写入NSLog。这样,即使在您返回程序后,您也可以看到发生了什么

最好的方法是将didReceiveMemoryWarning与UILabel对象一起使用

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
  debugLabel.text=@"Did receive memory warning";
}
要解决此问题(即重新加载图像),您可以注册该视图以接收 UIApplications将从通知中心输入ForegroundNotification,然后调用必要的重新加载调用,即检查哪些图像为零(已发布)且应重新加载

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(viewNeedsReload) name:UIApplicationWillEnterForegroundNotification object:nil];

- (void) viewNeedsReload
{
  //Check validity of each image here and reload if necessary
}