Objective c 使用iOS上的NSMutableDictionary进行内存管理
我将手动管理NSMutableDictionary的内存,而不使用自动释放。mutableDictionary中的每个对象都是一个NSArray,每次我在mutableDictionary中添加一个数组时,我将使用Objective c 使用iOS上的NSMutableDictionary进行内存管理,objective-c,memory-management,nsmutabledictionary,retaincount,Objective C,Memory Management,Nsmutabledictionary,Retaincount,我将手动管理NSMutableDictionary的内存,而不使用自动释放。mutableDictionary中的每个对象都是一个NSArray,每次我在mutableDictionary中添加一个数组时,我将使用 NSArray *newArray = [[NSArray arrayWithArray:anArray] retain] [mutableDict setObject:newArray forKey:@"aKey"]; 问题是,我怎样才能保证没有内存泄漏?我在dealloc中直接
NSArray *newArray = [[NSArray arrayWithArray:anArray] retain]
[mutableDict setObject:newArray forKey:@"aKey"];
问题是,我怎样才能保证没有内存泄漏?我在dealloc中直接使用[mutableDict release]是件好事?mutableDict的重新计数是否等于其对象(那些保留数组)的所有重新计数之和?您可以:
NSArray *newArray = [NSArray arrayWithArray:anArray];
[mutableDict setObject:newArray forKey:@"aKey"];//mutableDict will auto retain newArray.
您可以使用仪器(泄漏)查看您的项目有多少泄漏。您不需要保留,因为setObject已经为您执行了保留。你只要把字典里的单词保留多久就可以了 看
retain
获得+1,另一个为+1,因为字典保留了它。那是个漏洞。省去你的保留
,一切都会好起来的dealloc
中释放字典是正确的。如果没有其他对字典的强引用,它将被释放,释放其中包含的所有对象。这意味着您的阵列也将被释放,这可能是您想要的我要加5。真的忘了RetainCount了吗?确实是这样,我没有意识到setObject forKey方法会自动为口述保留对象,所以没关系。谢谢