【问题标题】:Is there any memory leak in following snippet of code?以下代码片段中是否有任何内存泄漏?
【发布时间】:2012-10-15 11:43:56
【问题描述】:

'countdown' 是一个 uimageview 属性,定义如下:

@property (retain, nonatomic) IBOutlet UIImageView *countDown;

countDown.image=  [[[UIImage alloc] 
      initWithContentsOfFile:[[NSBundle mainBundle] 
      pathForResource:@"backgroundimage" ofType:@"png"]]autorelease];

【问题讨论】:

    标签: iphone memory-management uiimage memory-leaks


    【解决方案1】:

    可能会有。

    如果您从 Leaks Instrument 中找到它,它会向您显示泄漏对象的创建位置,而不是泄漏对象的位置。

    因此,虽然看起来不错,但您将自动释放的对象传递给属性,并且属性通常可以很好地管理它们的内存,但您正在对导致它不被释放的图像执行其他操作。

    您可能忘记在 dealloc 中释放它,或者在没有意识到您对它有强引用的情况下使用它。

    您需要做的是尝试跟踪该图像的生命周期,看看您将它保留在没有发布的位置。

    【讨论】:

      【解决方案2】:

      取决于 countDown 对象是什么,以及是否在 countDown 类的 dealloc() 方法中释放属性 image的对象。

      编辑:看到你的问题编辑后..

      如果您正确释放 countDown,则不会发生内存泄漏。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-22
        • 1970-01-01
        • 2013-03-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多