我對異步UrlConnections有以下代碼。如果請求失敗, 我將NSString
添加到保存在NSUserDefaults
中的NSMutableArray
。 第一次它正確添加,但第二次它拋出一個錯誤:在異步UrlConnections中使用NSUserDefaults的意外行爲
'NSInternalInconsistencyException', reason: '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object
的代碼是:
[NSURLConnection sendAsynchronousRequest:theRequest queue:mainQueue completionHandler:^(NSURLResponse *response, NSData *responseData, NSError *error) {
NSHTTPURLResponse *urlResponse = (NSHTTPURLResponse *)response;
if (!error) {
//something
}
else {
NSMutableArray *unprocessedSubscription=[[NSUserDefaults standardUserDefaults]objectForKey:@"unprocessedSubscription"];
if(unprocessedSubscription==nil)
unprocessedSubscription=[[NSMutableArray alloc]init];
NSString * [email protected]"something";
[unprocessedSubscription addObject:subscriptionToAdd];
[[NSUserDefaults standardUserDefaults]setObject:unprocessedSubscription forKey:@"unprocessedSubscription"];
[[NSUserDefaults standardUserDefaults]synchronize];
}
}];
爲什麼不合理?我是這個網站的新手,在這裏發佈問題,請給我理由,讓我可以改進提問。 – user2412870