尝试在网上找到答案,但不能。所以我想知道是否有其他人知道以及为什么?
假设我有NSDictionary
或NSArray
,用于存储对象内部的对象。如果我发布NSDictionary
,是否存在潜在的泄漏,因为我没有释放NSDictionary
列表中的对象?
例如:
NSDictionary *dict = [NSDictionary alloc] init];
// Create a bunch of objects, NSStrings, etc.
// Store it into dict.
[dict release];
这还会释放dict中的所有内容吗? (对象,nsstrings等)。
在此先感谢大家!
答案 0 :(得分:1)
NSDictionary
或NSArray
中的所有项目在删除时或在列表被销毁时添加和释放时会自动保留。
例如:
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
MyObject *obj = [[MyObject alloc] init];
[dict setObject:obj forKey:@"foo"]; // the dictionary retains "obj"
[obj release]; // this matches the "alloc/init"
// but "obj" still is retained by the dictionary
[dict release]; // now "obj" gets released
答案 1 :(得分:1)
当你在NSDictionary或NSArray上发布时,只要数组中对象的保留计数为1(意味着只要你在数据结构中插入对象后释放它们),那么一旦你释放字典或数组,这些对象也将被释放。