Cocoa touch NSMutableDictionary、alloc、init和reiniting

Cocoa touch NSMutableDictionary、alloc、init和reiniting,cocoa-touch,memory-management,nsmutabledictionary,Cocoa Touch,Memory Management,Nsmutabledictionary,在以下代码中: //anArray is a Array of Dictionary with 5 objs. //here we init with the first NSMutableDictionary *anMutableDict = [[NSMutableDictionary alloc] initWithDictionary:[anArray objectAtIndex:0]]; ... use of anMutableDict ... //then want to clea

在以下代码中:

//anArray is a Array of Dictionary with 5 objs. 

//here we init with the first
NSMutableDictionary *anMutableDict = [[NSMutableDictionary alloc] initWithDictionary:[anArray objectAtIndex:0]];

... use of anMutableDict ...
//then want to clear the MutableDict and assign the other dicts that was in the array of dicts

for (int i=1;i<5;i++) {
    [anMutableDict removeAllObjects];
    [anMutableDict initWithDictionary:[anArray objectAtIndex:i]];
} 
//anArray是一个包含5个对象的字典数组。
//在这里,我们从第一个开始
NSMutableDictionary*anMutableDict=[[NSMutableDictionary alloc]initWithDictionary:[anArray objectAtIndex:0]];
... 使用一个可变的dict。。。
//然后要清除MutableDict并分配dict数组中的其他dict

对于(int i=1;i,如果使用自动删除词典,代码将简单得多:

NSMutableDictionary *anMutableDict = [NSMutableDictionary dictionaryWithDictionary:[anArray objectAtIndex:0]];

... use of anMutableDict ...

for (int i=1; i<5; i++)
{
    anMutableDict = [NSMutableDictionary dictionaryWithDictionary:[anArray objectAtIndex:i]];
} 
NSMutableDictionary*anMutableDict=[NSMutableDictionary dictionary Withdictionary:[anArray objectAtIndex:0]];
…使用可变表目录。。。

对于(int i=1;i,如果使用自动删除词典,代码将简单得多:

NSMutableDictionary *anMutableDict = [NSMutableDictionary dictionaryWithDictionary:[anArray objectAtIndex:0]];

... use of anMutableDict ...

for (int i=1; i<5; i++)
{
    anMutableDict = [NSMutableDictionary dictionaryWithDictionary:[anArray objectAtIndex:i]];
} 
NSMutableDictionary*anMutableDict=[NSMutableDictionary dictionary Withdictionary:[anArray objectAtIndex:0]];
…使用可变表目录。。。

对于(int i=1;i这不是使用init/alloc的方式。相反,请尝试:

//anArray is a Array of Dictionary with 5 objs. 

//here we init with the first
NSMutableDictionary *anMutableDict = [[NSMutableDictionary alloc] initWithDictionary:[anArray objectAtIndex:0]];

... use of anMutableDict ...
//then want to clear the MutableDict and assign the other dicts that was in the array of dicts

for (int i=1;i<5;i++) {
    [anMutableDict removeAllObjects];
    [anMutableDict addEntriesFromDictionary:[anArray objectAtIndex:i]];
} 
//anArray是一个包含5个对象的字典数组。
//在这里,我们从第一个开始
NSMutableDictionary*anMutableDict=[[NSMutableDictionary alloc]initWithDictionary:[anArray objectAtIndex:0]];
…使用可变表目录。。。
//然后要清除MutableDict并分配dict数组中的其他dict

对于(int i=1;i这不是使用init/alloc的方式。相反,请尝试:

//anArray is a Array of Dictionary with 5 objs. 

//here we init with the first
NSMutableDictionary *anMutableDict = [[NSMutableDictionary alloc] initWithDictionary:[anArray objectAtIndex:0]];

... use of anMutableDict ...
//then want to clear the MutableDict and assign the other dicts that was in the array of dicts

for (int i=1;i<5;i++) {
    [anMutableDict removeAllObjects];
    [anMutableDict addEntriesFromDictionary:[anArray objectAtIndex:i]];
} 
//anArray是一个包含5个对象的字典数组。
//在这里,我们从第一个开始
NSMutableDictionary*anMutableDict=[[NSMutableDictionary alloc]initWithDictionary:[anArray objectAtIndex:0]];
…使用可变表目录。。。
//然后要清除MutableDict并分配dict数组中的其他dict
对于(int i=1;i您不需要“重新输入”对象-ever.Initialization用于新的
alloc
ed实例,并可能在初始化完成后做出不正确的假设。对于NSMutableDictionary,您可以使用
setDictionary:
使用新字典或
addEntriesFromDi完全替换字典的内容字典:
添加另一个字典中的条目(除非有冲突,否则不删除当前条目)

更一般地说,您可以释放该字典,并在数组中创建字典的
mutableCopy

您不需要“重新生成”对象-ever.Initialization用于新的
alloc
ed实例,并可能在初始化完成后做出不正确的假设。对于NSMutableDictionary,您可以使用
setDictionary:
使用新字典或
addEntriesFromDi完全替换字典的内容字典:
添加另一个字典中的条目(除非有冲突,否则不删除当前条目)


更一般地说,您可以释放该字典并在数组中对字典进行
mutableCopy

ow,抱歉,这是一个不完整的代码。在循环中,我加载dict an,然后使用它。ow,抱歉,这是一个不完整的代码。在循环中,我加载dict an,然后使用它。@Marcos:那么您应该接受@Chuck的答案。这就是所以,这是对你问题的好答案表示敬意的方式。@Marcos:那么你应该接受@Chuck的答案。这就是对你问题的好答案表示敬意的方式。