0

これは非常に単純な例です。これらのコード行がクラッシュを引き起こす理由を説明できません。forループで複数のスレッドを作成したいだけです。AppDelegate で:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    for (int i = 0; i < 5; i++) {

        [self performSelectorInBackground:@selector(workInBackground)
                               withObject:nil];
    }
    return YES;
}

-(void)workInBackground{

}

アプリがクラッシュすることがあります (lldb クラッシュ、iPhone Simulator 5.0 - 6.1、Xcode バージョン 4.6.2)。ARCを使用しています。

誰でもこの動作を説明できますか?

アップデート

私はその問題を「解決」しました。各テストの前にクリーンアップを実行すると、クラッシュは発生しなくなりました。

4

2 に答える 2

0

わかりましたので、アップルのドキュメントを読むと、次のように書かれています。アプリをアクティブ (フォアグラウンド) 状態またはバックグラウンド状態に移行するメソッド。」これは、実際にはこの時点のアプリがまだフォアグラウンド状態ではないことを意味します。ここでは、スレッドを開始する意図をどこかに保存する必要があります。その後、システムはメソッド- (void)applicationDidBecomeActive:(UIApplication *)applicationを呼び出します。この時点で、アプリがフォアグラウンド状態でアクティブです。スレッドを開始する意図を記録した場合は、それを実行できます。意図変数のステータスをリセットすることを忘れないでください

于 2013-06-08T13:04:14.920 に答える