キューに入れた NSOperation があります。NSOperation は長時間実行される写真処理を実行し、その写真のコア データに情報/メタ データを保存します。私のカスタム NSOperation クラスのメイン メソッドでは、以下のコード ブロックを実行します。
-(void)main
{
//CODE ABOVE HANDLES PHOTO PROCESSING...
//........
//THEN I SAVE ALL DATA BELOW LIKE SO
[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
Post *post = [Post createInContext:localContext];
//set about 15 pieces of data, all strings and floats
post.XXXX = XXXXX;
post.DDDD = DDDDD;
etc...
} completion:^(BOOL success, NSError *error) {
NSLog(@"Done saving");
}];
}
私の問題は、保存時に写真が 3 枚しかない場合でも、UI が本当にフリーズすることです。これを NSOperation で実行しても問題ないと思っていたでしょう。
各 NSOperation は 1 枚の写真を処理するため、キューに 5 ~ 10 枚の写真が含まれる場合があることを付け加えておく必要がありますが、UI がフリーズすると言ったように 3 枚だけでも、違いはないと思います。
お手伝いありがとう。
更新:------------ * --------------
バージョン2.2に切り替えましたが、UIがさらにブロックされているようです...また、現在使用しています
-(void)main
{
NSManagedObjectContext *localContext = [NSManagedObjectContext contextForCurrentThread];
//CODE BELOW HANDLES PHOTO PROCESSING...
//........
//THEN I SAVE ALL DATA BELOW LIKE SO
Post *post = [Post createInContext:localContext];
//set about 15 pieces of data, all strings and floats
post.XXXX = XXXXX;
post.DDDD = DDDDD;
[localContext saveToPersistentStoreWithCompletion:^(BOOL success, NSError *error) {
}];
}
これはすべて私の NSOperation クラスで行われますが、何か間違っていますか?