2013-01-12 105 views
0

如何在NSDictionary中存儲未初始化的對象?未初始化對象的NSDictionary?

我想我會做這樣的,但我不能肯定,這是一個好辦法:

NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys: 
        [MyObject1 alloc], @"myObject1", 
        [MyObject2 alloc], @"myObject2" 
        , nil]; 

MyObject1 *object = [dict objectForKey:@"myObject1"]; 

[object init]; 

任何幫助,將不勝感激。

+0

你爲什麼要這麼做? – omz

+0

像omz一樣,很難看出這一點。你基本上想爲一些鍵存儲一堆nils?這是不允許的,正如所說的那樣沒有意義。也許你正在接近你想要解決的任何任務,形成錯誤的結局。你的最終目標是什麼? –

+0

我需要一個將實現相同協議的對象字典,但方法的實現將有所不同,並且關鍵字將是將會告訴使用什麼對象的參數。 – Pelish8

回答

3

你需要的是在字典裏面存儲可變對象。這樣做,您將能夠在插入後修改它們,因爲不可變的字典不允許插入新的對象。

如果「未初始化」你的意思是,對象只被用ALLOC創建,無需初始化,這是因爲deprecable初始化可能會返回一個不同的對象從一個具有ALLOC返回。所以只是存儲他們像你這樣做,當你需要修改它們調用來完成:

NSDictionary *dict = @{ @"myObject1" : [MyObject1 new] , @"myObject2" : [MyObject2 new] }; 
dict[@"myObject1"].someProperty= someValue; 

如果您MyObject1類是不可改變的,那麼你必須使用一個可變的字典。