Iphone 如何在ARC项目中重新初始化NSMutableDictionary?

Iphone 如何在ARC项目中重新初始化NSMutableDictionary?,iphone,objective-c,ios,automatic-ref-counting,nsmutabledictionary,Iphone,Objective C,Ios,Automatic Ref Counting,Nsmutabledictionary,我有一个类级别的NSMutableDictionary对象,需要对其进行初始化和重新初始化。由于我的项目是ARC,我不确定是否可以使用release 正确的方法是什么 我当前的代码导致崩溃: myDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys: value1,@"key1", value2,@"key2", nil]; 请注意,此崩溃是在类加载后第二次执行此操作时发生的,而不是第一次。所以问题肯定是我在重新分配它 在任何情

我有一个类级别的NSMutableDictionary对象,需要对其进行初始化和重新初始化。由于我的项目是ARC,我不确定是否可以使用release

正确的方法是什么

我当前的代码导致崩溃:

myDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys: value1,@"key1", 
value2,@"key2", nil];
请注意,此崩溃是在类加载后第二次执行此操作时发生的,而不是第一次。所以问题肯定是我在重新分配它


在任何情况下,不管崩溃与否,我都希望在ARC项目中以一种无泄漏的方式来处理此问题。

不确定重新初始化是什么意思,但您始终可以删除字典中的所有键和值并将其重新放入。

只需重新分配+初始化即可,您以前的所有值都将被释放,新对象将被重新分配到同一个对象/字典。

我认为您需要这样做

 -(void)ViewDidLoad
 {
      [super viewDidLoad];
      myDict =  [[NSMutableDictionary alloc] initWithObjectsAndKeys: value1,@"key1", value2,    @"key2", nil];
 }
当您使用它时,请不要再次alloc/init,您可以执行以下操作

if([[myDict allKeys]count])
{
     [myDict removeAllObjects];
}
并在字典中再次设置值


怎么了?有了ARC,你不能称之为释放。简单地分配一本新字典就可以了。错误会告诉我们更多。处理这种情况和所有其他情况的正确方法是阅读文档。这是一个非常基本的问题,告诉我们你还没有读过一点文档。不知道为什么这么多人根本不理解我的问题。不管怎么说,我读了这些文件,现在很清楚了,无论如何,有几百个这样的人在做一轮SOF,而不仅仅是这一轮。我投票决定关闭这个。应该重新分配的是变量,而不是对象。您可以重新初始化对象,但代码中显示的是将新创建的对象重新分配到现有变量中。如果将其设置为nil,如何向其添加值?OP正在执行的操作已经正确。无需将其设置为零。无需删除现有值。只需分配一个新实例。就这样。如前所述,您的答案声明变量应设置为nil,而不应设置其他值。我想你其实知道该怎么做,但你在回答中所写的充其量只是误导。天哪,老兄,告诉我们错误:请注意:你写的最初陈述没有任何错误。不要担心内存泄漏,它不会泄漏。但是InitWithObjectsSandKeys与清理无关,ARC已经读过了。@NiravBhatt:ARC为您进行内存管理。不用担心。即使您的保留计数达到1,2,3,4。ARC将跟踪所有数据。所有弱引用都将被释放。我不在乎,只是使用removeall+set清除了它。正如题名所示,我需要一种更可靠的方法来做到这一点,而不会弄乱记忆,仅此而已。很多时候像inits这样的方法在内部做事情,你关于ARC的文章部分回答了我的问题,谢谢!是的,我知道这是可能的,不知何故,我希望我可以用一条语句处理所有的键和值,就像我用initWithObjectsAndKeys所做的那样。有可能吗?
 [myDict setValue:@"Abc" forKey:@"xyz"];