Iphone 在iOS 4中执行多任务时的内存管理
根据苹果公司的说法。。。在后台挂起模式下运行时,应用程序应尽可能减少内存占用。我通过在ApplicationIdentinterBackground中释放一组2D纹理并在ApplicationWillEnterForeground中重新加载相同的纹理来减少应用程序的内存占用。大多数情况下,一切都正常 我的问题是:当我快速地将我的应用程序移入/移出后台时,为什么会获得SIGABRT或EXEC_BAD_访问权限?当应用程序返回前台并重新加载纹理时,会出现错误 当我将应用程序移到后台或从后台移到后台时,我没有收到任何错误。我怎样才能防止这种情况?也许在我尝试重新加载资源之前,我应该检查这些资源是否已被释放Iphone 在iOS 4中执行多任务时的内存管理,iphone,memory-management,ios4,Iphone,Memory Management,Ios4,根据苹果公司的说法。。。在后台挂起模式下运行时,应用程序应尽可能减少内存占用。我通过在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,因为这样,如果您发送消息,则不会发生任何事情,而不会导致程序崩溃。