0

数日前に performSelectorInBackground: を発見し、これが完璧なアプリの場所をすぐに見つけました。

- (void)activate {

    waitForStartCode.text = @"Loading...";
    userNotifications.text = @"";
    timeRemaining.text = @"";
    [loadingNTP startAnimating];

    [self performSelectorInBackground:@selector(initializeEverything) withObject:nil];

}

これは、ビューが表示されたときに呼び出されます。以前は、CocoaAsyncSocket を使用して NTP タイム サーバーに接続していたときに、このプロセスが完了するまでアプリがフリーズしていました。アニメーション化された UIActivityIndi​​catorView を使用した読み込みビューが本当に必要です。

CocoaAsyncSocket を使用した NTP 初期化を除いて、 initializeEverything -(void) のすべてが正常に動作します。

[NetworkClock sharedNetworkClock];

私は得る:

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

熟練していない私の目でも、CocoaAsyncSocket がバックグラウンドで実行されることを意図していないことがわかりました。

これを回避する方法はありますか?

4

1 に答える 1

1

CocoaAsyncSocket は非同期ネットワークをサポートしています。したがって、原則として、UI のフリーズを防ぐためにバックグラウンド スレッドを自分で作成する必要はありません。CocoaAsyncSocket がバックグラウンドで通信を処理します。

フレームワークを「ブロッキング」の方法で使用しているか、UI ブロックを作成している何か他のことを行っているかどうかはわかりません。ただし、前述したように、原則としてバックグラウンド スレッドを自分で管理する必要はありません。

于 2013-02-16T16:45:38.137 に答える