【问题标题】:Memory leak of an NSMutableArray using Instruments使用 Instruments 的 NSMutableArray 的内存泄漏
【发布时间】:2011-11-08 06:42:49
【问题描述】:

根据 XCode 中的泄漏工具,它是说这条线导致内存泄漏 (100%)?

self.unsentPatients = [[NSMutableArray alloc] initWithArray:[defaults arrayForKey:UNSENT]];

我在 dealloc 上正确释放等(肯定正在运行)所以我不明白我哪里出错了?

这只是一个小漏洞,Analysis 没有提出任何建议,但它仍然是一个漏洞。

亲切的问候,

多米尼克

【问题讨论】:

    标签: iphone cocoa-touch memory-leaks xcode4 instruments


    【解决方案1】:

    这段代码有很多问题。

    我假设该属性保留了价值,那么您不应该像现在这样分配价值,而是更像:

    NSMutableArray *temp = [[NSMutableArray alloc] initWithArray:[defaults arrayForKey:UNSENT]];
    self.unsentPatients = temp;
    [temp release], temp = nil;
    

    self.unsentPatients = [[[NSMutableArray alloc] initWithArray:[defaults arrayForKey:UNSENT]] autorelease];
    

    您还应该避免在 dealloc 或 init 中使用 self. 语法,这将调用 mutator。 在多线程环境中,这可能会产生问题。

    所以正确的dealloc应该是:

    - (void) dealloc {
       [unsentPatients release], unsentPatients = nil;
       [super dealloc][;
    }
    

    【讨论】:

      猜你喜欢
      • 2011-06-28
      • 1970-01-01
      • 2017-05-26
      • 1970-01-01
      • 2011-06-07
      • 2012-07-29
      • 2011-01-21
      • 2011-05-27
      相关资源
      最近更新 更多