我将手动管理NSMutableDictionay的内存,而不使用自动释放。 mutableDictonary中的每个对象都是NSArray,每次我在mutableDictionary中添加一个数组时,我都会使用
NSArray *newArray = [[NSArray arrayWithArray:anArray] retain]
[mutableDict setObject:newArray forKey:@"aKey"];
问题是,我怎么能保证没有内存泄漏?我在dealloc中直接使用[mutableDict release]是好的吗? mutableDict的retainCount是否等于其对象的所有retainCounts(保留的数组)的总和?
答案 0 :(得分:7)
retain
的+1和另外+1,因为字典会保留它。那是泄密。遗漏你的retain
即可。dealloc
中发布字典是正确的。如果没有对字典的其他强引用,它将被释放,释放其中包含的所有对象。这意味着您的阵列也将被释放,这可能就是您想要的。retainCount
。答案 1 :(得分:0)
NSArray *newArray = [NSArray arrayWithArray:anArray];
[mutableDict setObject:newArray forKey:@"aKey"];//mutableDict will auto retain newArray.
您可以使用仪器(泄漏)查看您的项目有多少泄漏。
答案 2 :(得分:0)
您不需要保留,因为setObject已经为您执行了保留。只要你愿意,你就可以在你的字典上保留。
请参阅Reference