【问题标题】:How to right dealloc object when app goes to background?当应用程序进入后台时如何正确释放对象?
【发布时间】:2011-05-13 05:04:41
【问题描述】:

只有一个问题“当应用程序进入后台时如何正确释放对象?”。我正在开发一些应用程序,一切正常。当我将应用程序置于后台然后再次启动时,它会崩溃。不是立即(应用程序在我关闭它的地方加注星号),而是当我选择一些单元格或只是滚动表格视图时。所以我很确定应用程序调用已经发布的数据。

这里是dealloc的例子

- (void)dealloc {


    [anObject release];
    [array release];
    [locationManager release];
    [currentLatitude release];
    [currentLongitude release];
    [filteredListContent release];
    [super dealloc];
}

有什么建议吗?

【问题讨论】:

    标签: iphone memory-management ios4 multitasking dealloc


    【解决方案1】:

    除非您在应用程序委托的 applicationDidEnterBackground 方法中专门解除分配,否则不应自动为您解除分配。

    我从未遇到过您遇到的问题。您确定即使您从未将其置于后台,一段时间后也不会发生同样的事情吗?

    这里很好地解释了所有背景内容如何组合在一起:

    Understanding iOS 4 Backgrounding and Delegate Messaging

    【讨论】:

      【解决方案2】:

      我审查并重新编写自己的代码。问题正如我在内存释放中所预期的那样。我在不应该的地方使用了自动释放。它仍然很奇怪,因为当我再次打开它时应用程序确实崩溃了。

      谢谢大家,不是你们给我2个否定的礼物,你们是混蛋。不要被冒犯,而不是给出一些建议,你只是给出毫无根据的否定。

      【讨论】:

        【解决方案3】:

        永远不要像这样释放任何物体。使用

        - (void)dealloc {
        
        if(anObject){
        [anObject release];
        anObject = nil;
        }
        if(array){
        [array release];
        array = nil;
        }
        //same approach for all.
        
         [super dealloc];
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-03-09
          • 2020-09-10
          • 2018-02-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-06-02
          相关资源
          最近更新 更多