根据我的理解,NSMutableDictionary
在释放时释放所有对象。我为此写了一个测试:
#import <Foundation/Foundation.h>
int main(int argc, char *argv[])
{
@autoreleasepool
{
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
NSObject *object = [[NSObject alloc] init];
[dictionary setObject:object forKey:@"key"];
[dictionary release];
NSLog(@"%@", object);
}
}
但是,该对象仍然存在,并且尚未解除分配:
2014-02-15 09:34:31.883 Untitled[15548:707] <NSObject: 0x7fa0b9c09c60>
为什么会这样?
答案 0 :(得分:3)
你做了一个分配&amp;在你的“object
”上初始化。这使得保留计数为1。
将它添加到词典时,会使保留计数为2。
释放字典时,对象的保留计数减少为1。
这就是为什么你可以打印出它的“内容”,因为“object
”的保留计数为1并且还没有真正发布。