我有这个泄漏〜6KB的方法:
+ (EInspectorFacilityInfo*) newWithNode: (CXMLNode*) node
{
if(node == nil) { return nil; }
return (EInspectorFacilityInfo*)[[[EInspectorFacilityInfo alloc] initWithNode: node] autorelease];
}
这是一个屏幕截图,指示仪器中的内存泄漏。
如何摆脱这种内存泄漏?
答案 0 :(得分:7)
该方法中包含“new”一词,因此Objective-C conventions期望它返回对象的拥有引用,即。保留计数为1的对象。自动释放对象将返回保留计数为0的对象。
您必须从方法名称中删除单词new,或者不自动释放该对象 - 在这种情况下,调用者将负责释放它。
答案 1 :(得分:1)
对Jasarien回答的小补充,您应该将您的方法命名为:
+ (EInspectorFacilityInfo*) inspectorFacilityInfoWithNode: (CXMLNode*) node
这将解决您的问题并匹配Cocoa编码风格和精神。