我有一個字典已分配,並準備好進入我的程序的appDelegate。爲什麼我的NSmutableDictionary被轉換成NSCFString?
//appdel.m
NSMutableDictionary *dict;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions {
// Overide point for customization after application launch.
dict = [[NSMutableDictionary alloc]init];
dict = HBLoadDictionary(@"/dict.plist");
// Add the tab bar controller's view to the window and display.
[self.window addSubview:tabBarController.view];
[self.window makeKeyAndVisible];
return YES;
}
所以我想讓這個字典存在於其他文件中,所以我把它作爲一個外部的其他文件進行編輯和讀取。
//viewcontroller.m
extern NSMutableDictionary *dict;
和稍後我決定設置一個鍵的對象。事件只是一個EKevent。
NSString* str = [[NSString alloc] initWithFormat:@"%@", event.eventIdentifier];
NSString *eID = [[NSString alloc]init];
eID = [data valueForKey:@"id"];
[dict setObject:str forKey:eID];
當我做出一個函數調用,我會得到這個
- [NSCFString的setObject:forKey:]:無法識別的選擇發送到實例
在一個點上我甚至有一個UIImage而不是一個NSCFString,這導致我相信內存是一個問題,我沒有處理它的權利。爲什麼它甚至改變那種類型?導致其導致函數調用混亂...
你的權利我不認爲有可能在保留中包裝c方法。至於泄漏去,我有一個相當的看法,但我補丁。我沒有想過要有一個靜態變量,那會是我的單身權利嗎? – Ohmnastrum
對,靜態變量是你的單身人士。你可以使用像[MyAppDelegate dict]這樣的東西來訪問它,這是一個應該總是返回同一個對象的類方法。您將在初始化爲nil的實現中有一個靜態的NSMutableDictionary變量。聲明之後,檢查變量是否爲零,如果是,則使用上面答案中的行進行初始化。 – lazycs