0

メインスレッドをぶら下げる可能性のあるコード(while(1)またはのような永遠のサイクル)を配置すると、次のようになります。sleep(xxxxx)

- (void)viewDidLoad
{
    [super viewDidLoad];
    while (1) {

    }
    //[NSThread sleepForTimeInterval:10000];
}

起動の約 50% で、起動直後に SIGABORT を取得しています。 ここに画像の説明を入力

何が起こっている?ただし、プログラムが起動されると、 Synchronous Networking On The Main Threadによると、(少なくとも 10 分間) 終了することはありません。watchdogアプリケーションの応答性をチェックし、動かなくなったものを終了する必要があるのはどうですか?

ここにはこれに関する質問があると思いますが、意味のある答えは含まれていません。

シミュレーターとデバイスの両方でテスト済み。起動時のクラッシュは sim でのみ発生します。プログラムはデバイスでもシムでも終了しませんが。

したがって、実際には 2 つの質問があります。1. ウォッチドッグはどうですか? 2. SIM でのこの起動時のクラッシュは何ですか?

PS 私の英語で申し訳ありませんが、私が言いたいことを理解していただければ幸いです。私の投稿を編集してください。

4

1 に答える 1

0

アプリケーションがクラッシュしている場合は、デバッガーでコードを確認してください。最初のビューの-(void)viewDidLoadメソッドにブレーク ポイントの例外を開始点として追加し、どこでクラッシュするかを確認します。これにより、通常、バグがすぐに明らかになります。

viewdidLoadビューが画面に表示される直前に呼び出されるので、私は提案しました。最初の画面がクラッシュしている場合は、viewDidLoad メソッドから始めます。

于 2013-10-02T13:45:53.467 に答える