-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