【发布时间】:2014-03-31 17:36:11
【问题描述】:
假设我有以下内容:
NSMutableDictionary * dict = [[NSMutableDictionary alloc] init];
现在,当我这样做时
[dict setObject:object forKey:key];
是否分配了新的NSMutableDictionary 或NSDictionary,其值只是添加到NSMutableDictionary,有点像在Java 中使用String 进行连接?还是只是简单的插入了一个新的键值对?
基本上,我要问的是
说我这样做:
@implementation ....
+(void) initialize
{
NSMutableDictionary * dict = [[NSMutableDictionary alloc] init];
}
然后做: - (void) addValue { [dict setObject:object forKey:key]; }
这样会更糟还是一样:
- (void) addValue
{
NSDictionary dict = @[key:object];
}
or
+ (void) initialize
{
NSDictionary * dict = @[key:object];
}
我知道+initialize 只被调用一次。另外,如果这个类只被调用一次呢?
【问题讨论】:
-
不,调用
setObject:forKey:只是更新现有的可变字典。为什么会认为创建了一个新字典? -
你的初始化方法什么都不做(除了浪费时间),因为
blah是一个局部变量并且不会转义该方法。
标签: ios objective-c cocoa-touch memory-management nsmutabledictionary