-4

我有一个需要初始化并重新初始化的类级NSMutableDictionary对象。由于我的项目是ARC,我不确定我是否可以使用发布。如何在ARC项目中重新初始化NSMutableDictionary?

什么是正确的方法来做到这一点?

我当前的代码将导致崩溃:

myDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys: value1,@"key1", 
value2,@"key2", nil]; 

注意,这是大跌时,我做的类加载后,不是第一次了这第二次。所以问题肯定是我重新分配它。

在任何情况下(崩溃或不),我想要一个无泄漏的方式来处理ARC项目中的这个。

+2

什么是错误?使用ARC,您无法拨打发布。简单地分配一个像你这样的新字典是没问题的。这个错误会告诉我们更多。 – rmaddy

+3

处理这种情况和所有其他情况的正确方法是阅读文档。这是非常基本的问题,告诉我们你没有阅读过文档。 – graver

+0

不知道为什么这么多人根本不明白我的问题。无论如何,我读了文件,现在很清楚,无论如何,有数百人像这样做了几轮SOF,而不仅仅是这一轮。我投票结束了这个。 –

回答

2

我认为你需要做这样的

-(void)ViewDidLoad 
{ 
     [super viewDidLoad]; 
     myDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys: value1,@"key1", value2, @"key2", nil]; 
} 

当你重新使用它,请不要分配/初始化一次,而不是你可以做以下

if([[myDict allKeys]count]) 
{ 
    [myDict removeAllObjects]; 
} 

并重新设置里面的值字典

[myDict setValue:@"Abc" forKey:@"xyz"]; 
+0

是的,我知道这是可能的,不知何故,我想,我可以我所有的键和值与一个说法,就像我跟initWithObjectsAndKeys一样。任何可能性? –

1

不确定“re-intialize”是什么意思,但您可以随时删除字典中的所有键和值,然后重新放入。

0

只需简单地alloc +再次初始化它,所有您以前的值将被释放,并且新的对象将被重新分配到相同的对象/字典。

+0

如何将值添加到“nil”? – rmaddy

+0

再次alloc + init。我们不能吗? –

+0

当然,但你说要将它设置为'nil',不要做另一个'alloc/init'。如果您只是将变量重新分配给新实例,则无需将其设置为“nil”。 – rmaddy