iOS5以前はNSOperationをキャンセルする為にcancelメソッド内でisFinishedにYESを設定すればよかったのですが、iOS5になってから「went isFinished=YES without being started by the queue it is in」っていうlogがコンソールに表示されるようになってしまいました。
どうやら「実行されてないのに終了しちゃだめね♥」
といっているようです。これを回避する為に実装を下記のように修正しました。
[self setValue:[NSNumber numberWithBool:YES] forKey:@"isFinished"];
[self setValue:[NSNumber numberWithBool:YES] forKey:@"isExecuting"]; [self setValue:[NSNumber numberWithBool:NO] forKey:@"isExecuting"]; [self setValue:[NSNumber numberWithBool:YES] forKey:@"isFinished"];これがあるべき姿かどうかはわかりませんが、キャンセルしてもlogに「went isFinished=YES without being started by the queue it is in」は表示されなくなれました。
めでたし、めでたし。。。なのか? ツイート
0 件のコメント :
コメントを投稿