Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在iOS 4中执行多任务时的内存管理_Iphone_Memory Management_Ios4 - Fatal编程技术网

Iphone 在iOS 4中执行多任务时的内存管理

Iphone 在iOS 4中执行多任务时的内存管理,iphone,memory-management,ios4,Iphone,Memory Management,Ios4,根据苹果公司的说法。。。在后台挂起模式下运行时,应用程序应尽可能减少内存占用。我通过在ApplicationIdentinterBackground中释放一组2D纹理并在ApplicationWillEnterForeground中重新加载相同的纹理来减少应用程序的内存占用。大多数情况下,一切都正常 我的问题是:当我快速地将我的应用程序移入/移出后台时,为什么会获得SIGABRT或EXEC_BAD_访问权限?当应用程序返回前台并重新加载纹理时,会出现错误 当我将应用程序移到后台或从后台移到后台时

根据苹果公司的说法。。。在后台挂起模式下运行时,应用程序应尽可能减少内存占用。我通过在ApplicationIdentinterBackground中释放一组2D纹理并在ApplicationWillEnterForeground中重新加载相同的纹理来减少应用程序的内存占用。大多数情况下,一切都正常

我的问题是:当我快速地将我的应用程序移入/移出后台时,为什么会获得SIGABRT或EXEC_BAD_访问权限?当应用程序返回前台并重新加载纹理时,会出现错误

当我将应用程序移到后台或从后台移到后台时,我没有收到任何错误。我怎样才能防止这种情况?也许在我尝试重新加载资源之前,我应该检查这些资源是否已被释放


在这种情况下,如何编写防御代码?

我知道这是一个老问题,但让我来试一试。您提到了发布2D纹理。您是否正在使用Cocos2D

今年早些时候,我遇到了一个与您类似的问题——问题不在于我的代码。Cocos2D的缺陷是,在异步加载新纹理的同时,可以清除纹理


我已经报告了这个问题,2月份对Cocos2D项目的承诺似乎也解决了类似的问题。

我知道这是一个老问题,但让我尝试一下。您提到了发布2D纹理。您是否正在使用Cocos2D

今年早些时候,我遇到了一个与您类似的问题——问题不在于我的代码。Cocos2D的缺陷是,在异步加载新纹理的同时,可以清除纹理


我已经报告了这个问题,2月份对Cocos2D项目的承诺似乎也解决了类似的问题。

我听说will enter front可以在通过快速切换进入后台之前调用。防御代码。我相信您已经知道了,但是当您向已发布的对象发送消息时会出现错误。很难用这个例子来具体说明。@拉普诺沃德:如果是这样的话,你可以考虑先跟踪执行的内容。这不一定是最好的编程实践,但应该是可行的。有一个防御措施可能会有所帮助:在解除分配后将纹理设置为nil,这样您就不会有向垃圾地址发送消息的危险。尝试使用NSZombiesEnabled运行,它至少会告诉您正在发送消息的对象,任何被释放的东西都应该被设置为nil,因为这样如果你发消息,什么也不会发生,而不是你的程序爆炸。我听说,在快速切换进入后台之前,可以调用will enter front。防御代码。我相信您已经知道了,但是当您向已发布的对象发送消息时会出现错误。很难用这个例子来具体说明。@拉普诺沃德:如果是这样的话,你可以考虑先跟踪执行的内容。这不一定是最好的编程实践,但应该是可行的。有一个防御措施可能会有所帮助:在解除分配后将纹理设置为nil,这样您就不会有向垃圾地址发送消息的危险。尝试使用NSZombiesEnabled运行,它至少会告诉您正在发送消息的对象,任何发布的内容都应该设置为nil,因为这样,如果您发送消息,则不会发生任何事情,而不会导致程序崩溃。