2014-04-11 45 views
1

我是Objective C新手,我使用了下面的代碼。如何避免添加對象到NSMutable數組之前NSMutable陣列添加對象值的變化?

for (int i = 0; i < [ValueisFound count]; i++) 
{ 
    NSString* ObjectName = [NSString stringWithUTF8String:name]; 
    ObjectName = [[NSClassFromString([NSString stringWithUTF8String:samType]) alloc]init]; 

    NSMutableDictionary* jsonDictionary=[TemplateClass SeparateArray:jsonValue_1 key:[arrayofKeys objectAtIndex:j] index:i]; 

    ObjectName = [TemplateClass JsonPharser:str1 jsonObject:jsonDictionary]; 

    NSMutableArray *samArray=[[NSMutableArray alloc]initWithObjects:[TemplateClass JsonPharser:str1 jsonObject:jsonDictionary], nil]; 

    [manoj_Array addObject:samArray]; 

    [samArray release]; 
    [ObjectName release]; 
} 

當執行用於循環:

  • 在I = 0,Object具有值(數= 10),現在manoj_Array還具有(數= 10)。
  • 在I = 1,Object具有值(數= 12),現在manoj_Array具有(數= 12,數= 12)。

但我想結果爲manoj_Array有(number = 10,number = 12)。我不知道數組值如何改變爲最後一個值。

+0

首先,我沒有真正明白你要用ObjectName做什麼。您還可以嘗試的語法是[manoj_Array addObject:@ {[TemplateClass JsonPharser:str1 jsonObject:jsonDictionary]}] ;.你可以做的就是將地址記錄在samArray的內存和manoj_Array的每個對象中。 – user1147981

+0

非常感謝。如果我嘗試「[manoj_Array addObject:@ {[TemplateClass JsonPharser:str1 jsonObject:jsonDictionary]}];」顯示警告爲「預期:」該怎麼辦? – Sakthimuthiah

回答

0

我的心

samArray和manoj_Array是共享的存儲器參考這就是爲什麼最後的值插入到manoj_Array

I = 0值是由1000

地址存儲I = 1個值是通過存儲1002

的地址,但manoj_Array共享內存中,以便改變最後的值被添加到manoj_Array

+1

是的,先生。但如何避免它? – Sakthimuthiah

+0

嘗試釋放並保留可變內存 – Rajaram

0

您可以實現KVO,以便知道值何時發生更改並處理其行爲。