如何修复自动释放对象的内存泄漏

JAH*_*lia 1 iphone memory-leaks objective-c ios xcode-instruments

我有这个泄漏〜6KB的方法:

+ (EInspectorFacilityInfo*) newWithNode: (CXMLNode*) node
{
  if(node == nil) { return nil; }
  return (EInspectorFacilityInfo*)[[[EInspectorFacilityInfo alloc] initWithNode: node] autorelease];
}
Run Code Online (Sandbox Code Playgroud)

这是一个屏幕截图,指示仪器中的内存泄漏. 在此输入图像描述

我怎样才能摆脱这种内存泄漏?

Jas*_*ien 7

该方法中包含"new"一词,因此,通过Objective-C约定,它应该返回对象的拥有引用,即.保留计数为1的对象.自动释放对象将返回保留计数为0的对象.

您必须从方法名称中删除单词new,或者不自动释放该对象 - 在这种情况下,调用者将负责释放它.