Iphone 到底部,我收到了记忆警告

Iphone 到底部,我收到了记忆警告,iphone,memory-management,didreceivememorywarning,Iphone,Memory Management,Didreceivememorywarning,我必须用DidReceiveMemoryWarning方法彻底解决这个问题。在这个论坛上,我读了大约三十篇关于这个话题的文章。每个答案都是不同的 第一个问题。您应该在DidReceiveMemoryWarning中释放对象,还是将其设置为零?或者两者都有 我已经读到我应该在didReceiveMemoryWarning方法中释放tableView数据源(如果有)。我还读到,您应该只发布ibi这个方法。我很困惑,这里什么是正确的 是否只有我在viewDidLoad中启动的对象才应该在DidRece

我必须用DidReceiveMemoryWarning方法彻底解决这个问题。在这个论坛上,我读了大约三十篇关于这个话题的文章。每个答案都是不同的

第一个问题。您应该在DidReceiveMemoryWarning中释放对象,还是将其设置为零?或者两者都有

我已经读到我应该在didReceiveMemoryWarning方法中释放tableView数据源(如果有)。我还读到,您应该只发布ibi这个方法。我很困惑,这里什么是正确的

是否只有我在viewDidLoad中启动的对象才应该在DidReceiveMemoryWarning中释放?还是我刚刚分配给的属性,例如:labelTitleText.text=@Woodie Guthrie? LabelTitletText是头文件中的一个属性

在我今天的应用程序中,我发布了所有分配的标签,就像上面dealloc方法中的示例一样。这感觉不对

我非常希望能有一个小的代码示例,这样就更容易理解了。我注意到,这是其他线程所缺少的


祝大家今天愉快

DidReceiveMemory当手机内存不足时会发出警告。您应该释放以后需要时可以检索的任何资源。想想缓存、未使用的对象之类的东西

我的理解是,你不应该在DidReceiveMemoryWarning中发布iBouts等,因为这些是应用程序正常工作所必需的


但是,您应该在viewDidUnload之类的方法中发布这些,当然也应该在dealloc中发布,正如您所述。如果您在某个时候保留了它们,很可能是使用了DidReceiveMemory属性。当手机内存不足时,会调用警告。您应该释放以后需要时可以检索的任何资源。想想缓存、未使用的对象之类的东西

我的理解是,你不应该在DidReceiveMemoryWarning中发布iBouts等,因为这些是应用程序正常工作所必需的


但是,您应该在viewDidUnload之类的方法中发布这些,当然也应该在dealloc中发布,正如您所述。如果您在某个时候保留了它们,很可能是使用了一个属性,那么底线是当您收到内存警告时,实际上不需要释放任何内容。然而,什么都不做会大大增加某些应用程序被杀死的可能性,而该应用程序可能是你的。但可能不是这样

如果您实际使用的是您分配的所有内存,例如,不是图像,您可以稍后重新加载,等等。然后什么也不做或保存重要状态,以防万一,并希望其他后台进程被终止或耗尽。做这件事的应用比你想象的要多

如果你确实有可以发布的东西,那么至少发布1个或更大的虚拟机页面。释放这些小东西、短字符串等,对于某些后台应用程序是被杀死还是被饿死几乎没有任何区别


在不释放内存或对象的情况下将指针或对象设置为nil是一种非常糟糕的形式,因为这只会泄漏内存,并会增加坏事情发生的可能性。释放/释放内存/对象后,可以将它们设置为nil。

底线是,当收到内存警告时,实际上不需要释放任何内容。然而,什么都不做会大大增加某些应用程序被杀死的可能性,而该应用程序可能是你的。但可能不是这样

如果您实际使用的是您分配的所有内存,例如,不是图像,您可以稍后重新加载,等等。然后什么也不做或保存重要状态,以防万一,并希望其他后台进程被终止或耗尽。做这件事的应用比你想象的要多

如果你确实有可以发布的东西,那么至少发布1个或更大的虚拟机页面。释放这些小东西、短字符串等,对于某些后台应用程序是被杀死还是被饿死几乎没有任何区别

在不释放内存或对象的情况下将指针或对象设置为nil是一种非常糟糕的形式,因为这只会泄漏内存,并会增加坏事情发生的可能性。释放/释放内存/对象后,可以将它们设置为零