基本的には、ブロックの実行が終了した後にセグを実行する必要があります。私はいくつかのJSONのことをするブロックを持っていて、いつ実行が終了したのかを知る必要があります。dispatch_asyncブロックのチェック方法は終了しました
私はjson_queueと呼ばれるキューを持っています。 ": "[:自己送信者:
dispatch_async(jsonQueue, ^{
[self doSomeJSON];
[self performSegueWithIdentifier:@"modaltomenu" sender:self];
});
それは文句を言わない私はラインを実行してみましょう:自己performSegueWithIdentifierを@" modaltomenu];"
jsonQueue = dispatch_queue_create("com.jaboston.jsonQueue", NULL);
私は、この構文でdispatch_asyncブロックを持っています
メインスレッドまたはウェブスレッド以外のスレッドからウェブロックを取得しようとしました。これは、セカンダリスレッドからUIKitを呼び出した結果である可能性があります。今すぐクラッシュします...
スレッドが汚れた作業をしたときに私はセグを呼び出すことができますか?
ありがとうございます。
PS:ビールと提携し、テディベア、花あなたが唯一のメインスレッド上のUIのメソッドを呼び出す必要があり< 3.
あなたは先生とビールを持っています。 (それは私が探していた答えです!)。私はあなたがいつでもメインキューに戻ることができることを完全に忘れていました。ブリリアント。 – jimbob
私はこのことについて初めてです。これは、ブロック内でperformSelectorOnMainThreadを使用するよりもなぜ優れていますか? –
@jimbob私は、3行目の 'dispatch_async'の代わりに' dispatch_sync'を使ったほうが良いでしょう(私はそれを編集しました)。このパターンは、WWDC2010セッション206ビデオで推奨されます。 @ranReloadedこのような単純なタスクのために全く新しいメソッドを作成する必要がないので、別のブロックを使用する方が便利です。ブロック定義の範囲内のすべての変数にアクセスできます。 – Johnnywho