6

私はXcodeとObjective-Cに非常に慣れていないので、まだ何をしているのかよくわかりません。;-)
基本的に、2つのスレッドを実行できるIPhoneアプリケーションが必要です。これは、後でUDP Sockets他のアプリとの通信に使用されます。

start-Thread/stop-ThreadUIのボタンが押されたときに反応する関数を配置しました。次に、実際にスレッドを作成して開始するためのコードを関数に入力します。

  • ここでの正しい手順は何でしょうか?

  • サブクラス化する必要があり NSThreadますか?

  • 新しいスレッドが実行されるコードをどこに実装しますか?

    runメソッドなどが表示されません。selectorそれは、私にはわからないことと関係があると思います。

4

4 に答える 4

15

ディスパッチ キューを使用します。これらは本質的に軽量のスレッドであり、スレッド化やキューイングについて直接心配する必要はありません。

-(void) spawn
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
        [self doWorkInBackground];
    });
}

組み込みのキューの 1 つまたは独自のキューを使用できます。

また、特にメモリ管理の側面など、ブロックについても読む必要があります。

于 2012-11-13T16:59:31.340 に答える
2
- (void)performBlockInBackground:(void (^)())block {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
        block();
    });
}

次に、次のように呼び出します。

[self performBlockInBackground:^{
    NSLog(@"Log from background");
}];
于 2012-11-13T17:12:39.967 に答える
1

NSOperationの使用を検討することもできます。内部ではディスパッチ キューを使用しますが、高レベルの API と、進行中の操作をキャンセルする可能性を提供します (これは役立つ場合があります)。

于 2013-05-16T08:13:37.800 に答える
1

これはかなり深い議論ですが、Apple の「同時実行プログラミング ガイド」を参考にしてください。

于 2012-11-13T16:58:26.073 に答える