代码之家  ›  专栏  ›  技术社区  ›  Tirth

如何解决内存泄漏问题?

  •  1
  • Tirth  · 技术社区  · 14 年前

    我开发了一个应用程序,在下面的方法中我发现内存泄漏,我如何消除泄漏?

    - (id)initWithString:(NSString *)str attributes:(NSDictionary *)attributes
    {
    
        if ((self = [super init]))
        {
            _buffer = [str mutableCopy];
            _attributes = [NSMutableArray arrayWithObjects:[ZAttributeRun attributeRunWithIndex:0 attributes:attributes], nil];
        }
    
        return self;
    
    }
    

    我在这条线附近发现了漏洞” _缓冲区=[str mutablecopy] ;"

    在分配堆栈跟踪中,我发现同时内存分配以cfstring的形式增加。

    谢谢。

    2 回复  |  直到 14 年前
        1
  •  2
  •   vodkhang    14 年前

    我想如果你打电话的话就不会有记忆泄露了 [_buffer release] 在里面 dealloc 方法。您有一个分配,因为对于每个包含类似 alloc , retain copy …创建新的对象实例。在这种情况下没关系。

    你要担心的另一件事是 _attributes 对象。您拥有一个自动释放的对象,下次尝试使用它时,它可能已经被释放了。

        2
  •  1
  •   Echelon    14 年前

    mutablecopy保留返回的对象,因此在完成后释放它是您的责任。这和 Memory Management Rules .