9
我試圖從一個的NSMutableDictionary刪除對象後得到一個例外。相關的代碼如下。 'settings'傳遞給方法,可以是NSDictionary或NSMutableDictionary。從一個可變的字典中刪除的對象拋出一個異常
NSMutableDictionary *mutableSettings = nil;
if ([settings isKindOfClass:[NSMutableDictionary class]])
mutableSettings = (NSMutableDictionary *)settings;
else
mutableSettings = [[[NSMutableDictionary alloc] initWithDictionary:settings] autorelease];
[mutableSettings removeObjectForKey:@"akey"];
此崩潰與
*終止應用程序由於未捕獲的異常 'NSInternalInconsistencyException',原因: ' - [__ NSCFDictionary removeObjectForKey:]:突變方法發送到不可變的對象'
請告訴我問題呢?謝謝。
此外,正如下劃線暗示的那樣,'__NSCFDictionary'是一個私有類。它不一定是唯一的字典類,它不能保證永遠都在。更貼切,它的NSMutableDictionary的一個子類,所以每* *字典(即__NSCFDictionary'的'實例)是一類的NSMutableDictionary的。所有這些都意味着沒有可靠的方法來判斷字典或任何其他plist對象是否可變。 – 2012-04-21 18:59:21