0

好奇心のために、次のコードを書き直そうとしています

// show HUD (with animation)
[SVProgressHUD showWithStatus:@"loading..."];

// wait for HUD to safely finish showing its animation
// (loading HUD will be visible for 1 sec)
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]

// dismiss HUD
// (dismiss HUD will be visible for 2 sec)
[SVProgressHUD dismissWithSuccess:@"finished!" afterDelay:2];

Grand Central Dispatch を使用してコードに挿入します。

私はdispatch_source_t、dispatch_semaphore_t、およびdispatch_afterを使用してみましたが、うまく機能しません:(そして私はあなたの助けが必要です!

SVProgressHUD のメソッドをブロックでラップしたくないことに注意してください。

4

1 に答える 1

2

あなたは本当にできません。NSRunLoopまたは、可能ですが、最終的にはもの自体をラップするだけで、膨大な作業になります。

iOS および Mac OS X のコンテキスト内では、メインのイベント ループは実行ループであり、モーダル パネル、HUD などはすべてその詳細に基づいて設計されています。

表示しているコードは、ネストされた実行ループです。メインの実行ループによっても維持される外側のループ内のサブループで、メインの実行ループを効果的に実行しています。(内部ループ内で起動されたアクション メソッドにブレークポイントを設定すると、バックトレースで何を意味するかがわかります)。

于 2012-02-09T04:22:09.957 に答える