サードパーティのライブラリを使用してファイルをダウンロードしようとしていますAFNetworking
。そのコアにはNSOperation
、ダウンロードが完了したときの完了ブロックを設定できるオブジェクトがあります。
どういうわけか、animateWithDuration:
このブロック内の が正しく実行されません: 完了ブロックと実際のアニメーションの両方が ~ 5 または 60 秒遅れるか、まったく実行されません。開始したことを知る唯一の方法は、NSLog 呼び出しを使用することです。
私はそれを実証しましょう:
[UIView animateWithDuration:0.1
animations:^{
controller.view.alpha=0.5;
NSLog(@"First Try Start");
}
completion:^(BOOL finished) {
NSLog(@"First Try End");
}];
// Here comes the NSOperation completion block
[self->currentConnection setCompletionBlock:^{
NSLog(@"downloadComplete!");
[UIView animateWithDuration:0.1
animations:^{
controller.view.alpha=0.5; // this doesn't run immediately, only the NSLog line
NSLog(@"Second Try Start");
}
completion:^(BOOL finished) {
NSLog(@"Second Try End");
}];
}];
コンソール出力:
2013-06-28 23:22:11.374 ML[7831:c07] First Try Start
2013-06-28 23:22:11.477 ML[7831:c07] First Try End
2013-06-28 23:22:11.742 ML[7831:1303] downloadComplete!
2013-06-28 23:22:11.745 ML[7831:1303] Second Try Start
2013-06-28 23:23:05.007 ML[7831:c07] Second Try End
助けていただければ幸いです。