非同期 UrlConnections の次のコードがあります。リクエストが失敗した場合は、 に保存されるNSString
a にa を追加します。最初は正しく追加されますが、2 回目はエラーがスローされます。NSMutableArray
NSUserDefaults
'NSInternalInconsistencyException'、理由: '-[__NSCFArray insertObject:atIndex:]: 変更メソッドが不変オブジェクトに送信されました
コードは次のとおりです。
[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 * subscriptionToAdd=@"something";
[unprocessedSubscription addObject:subscriptionToAdd];
[[NSUserDefaults standardUserDefaults]setObject:unprocessedSubscription forKey:@"unprocessedSubscription"];
[[NSUserDefaults standardUserDefaults]synchronize];
}
}];