NSMutableDictionary的objectForKey:方法会返回副本还是对象本身?

Big*_*Lex 4 iphone cocoa-touch nsdictionary ios

类的objectForKey:方法是否NSMutableDictionary返回对象的副本?

如果我有一个NSMutableArray存储在里面NSMutableDictionary,我做了一些修改(比如添加一个对象)到我用objectForKey:字典方法访问的数组,那些修改对于存储在字典中的数组是否有效?

joe*_*ick 9

不,它不会返回副本.

NSMutableArray *array = [NSMutableArray new];
NSMutableDictionary *dict = [NSMutableDictionary new];

NSLog(@"local instance of array: %p", array);

[dict setObject: array forKey: @"key"];

NSLog(@"returned from dictionary: %p", [dict objectForKey: @"key"]);
Run Code Online (Sandbox Code Playgroud)

输出:

2012-09-16 14:06:36.879 Untitled 3[65591:707] local instance of array: 0x7f98f940a2f0
2012-09-16 14:06:36.884 Untitled 3[65591:707] returned from dictionary: 0x7f98f940a2f0
Run Code Online (Sandbox Code Playgroud)

返回相同的指针,表示该对象尚未复制.