2012年2月16日木曜日

iOS5でwent isFinished=YES without being started by the queue it is inの対処

iOS5以前はNSOperationをキャンセルする為にcancelメソッド内でisFinishedYESを設定すればよかったのですが、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 件のコメント :

コメントを投稿