質問: iOSにUIViewのページめくりアニメーションをしている間にい次の画像を非同期で取得してアニメーション終了後に表示させたいです。アニメーションをしている間に画像取得が終わらないかもしれないのでセマフォで待ち合わせさせようとしたのですが、うまく行きません。 ``` semaphore=dispatch_semaphore_create(0) dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0),{ let ret=self.Load() dispatch_async(dispatch_get_main_queue(), { dispatch_semaphore_wait(self.semaphore, DISPATCH_TIME_FOREVER) self.Set() self.iv.hidden=false }) }) UIView.transitionWithView( self.iv, // 対象のビュー duration:5, // アニメーションの時間 options: UIViewAnimationOptions.TransitionCurlUp, // アニメーション変化オプション animations: {() -> Void in // アニメーションする処理 self.iv.hidden=true }, completion: {(finished: Bool) -> Void in // アニメーション終了後の処理 dispatch_semaphore_signal(self.semaphore) }) ``` Load()で画像を取得してSet()でUIViewにセットします。 completationにブレイクを入れておくと、 非同期処理が無い場合には来るのに非同期処理を入れると 来ません。 どうしたら良いでしょうか?困っています。アドバイスお願いします。
回答: メインスレッドでセマフォにSignalして、メインスレッドでセマフォにwaitしているからなのでは?