我正在收集对变量
的回应-(NSMutableDictionary *)getCombineIdAndNames{
NSMutableDictionary *lObjCombineIdAndNamesArrayPtr = [[NSMutableDictionary alloc] init];
[lObjCombineIdAndNamesArrayPtr setObject:lObjtempNamePtr
forKey:lObjtempIdPtr];
return [lObjCombineIdAndNamesArrayPtr autorelease];
}
这导致内存泄漏
gObjAppDelegatePtr.m_cObjCombineIdNameDictPtr = [gObjAppDelegatePtr.m_cDbHandler getCombineIdAndNames];
gObjAppDelegatePtr.m_cObjCombineIdNameDictPtr
。这是类型副本的属性。但它仍然给内存泄漏。如何解决它。请帮帮我。
答案 0 :(得分:0)
getCombineIdAndNames
完全没问题。你是alloc
字典并在你返回之前自动释放它。没错。
这表明内存泄漏是由gObjAppDelegatePtr
实例引起的。要么是它没有释放它的财产,要么整个物体都被泄露了。
顺便说一句,你可以在getCombineIdAndNames
中改进的一件事是使用NSMutableDictionary
的便利构造函数来完全避免所有的alloc / release调用。您还可以使用新的Obj-C容器语法:
-(NSMutableDictionary *)getCombineIdAndNames{
NSMutableDictionary *lObjCombineIdAndNamesArrayPtr = [NSMutableDictionary dictionary];
lObjCombineIdAndNamesArrayPtr[lObjtempIdPtr] = lObjtempNamePtr;
return lObjCombineIdAndNamesArrayPtr;
}