廢話不多說上代碼,項目中遇到的問題是:
NSMutableArray * arrayLoginNames = [NSMutableArray array];
arrayLoginNames = [[NSUserDefaults standardUserDefaults] mutableArrayValueForKey:KLastLoginNameForAutoSendMsgToKeFu];
這句話取出了數組,可是當對數組添加元素后,進行存儲時卡在了下面這句話:
[[NSUserDefaults standardUserDefaults] setObject:arrayLoginNames forKey:KLastLoginNameForAutoSendMsgToKeFu];
把主線程卡主,但是不崩潰,不知道為何,就Google了,stackoverflow給了解答辦法,
When you store mutable objects to NSUserDefaults, it stores an immutable copy of it so you can't change it directly like that. You have to get the mutable copy out of defaults, change it, and then set it back, replacing old object in defaults.
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; NSMutableArray *mutableArrayCopy = [[prefs objectForKey:@"theArray"] mutableCopy]; [mutableArrayCopy addObject:@"some new value"]; [prefs setObject:mutableArrayCopy forKey:@"theArray"];
[[NSUserDefaults standardUserDefaults] synchronize];