0

開くとスプラッシュ/ロード画面を表示するアプリがあります。アプリが進む2.5秒前にこれを設定しました。

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{

sleep(2.5);


[window addSubview:viewController.view];
[window makeKeyAndVisible];

}

スプラッシュ画面でアプリを1分間一時停止したいので(これには非常に理由があります)、次のように考えました。

sleep(60.0);

使用することができます。ただし、これを使用すると、アプリが開いてスプラッシュ画面に約20秒間留まり、その後、終了/クラッシュしてスプリングボードに戻ります。

なぜこれが当てはまるのか、何か考えはありますか?

これはどのようにすればよいですか?

編集//両方に注意する価値があります:

sleep(15.0);

sleep(19.0);

仕事。

sleep(20.0);

ではない。

解決策//スリープを使用せず、タイマーを使用します。私はここでチュートリアルに従いました:

http://adeem.me/blog/2009/06/22/creating-splash-screen-tutorial-for-iphone/

どうもありがとう、

Stu

4

7 に答える 7

5

私はここで純粋に推測していますが、メインスレッドをブロックしているため(タイマーの代わりにスリープを使用)、iPhoneOSはそれを「応答しないアプリ」と見なして強制終了している可能性があります。

NSTimerをチェックしてください。

于 2009-11-22T23:18:31.937 に答える
4

私は、OSがアプリがクラッシュしたと「考えている」というJoshuaNozziに同意します。

sleep()を削除し、代わりにこれを行います。

[window performSelector:@selector(addSubview:) withObject:viewController.view afterDelay:60.0f];
[window performSelector:@selector(makeKeyAndVisible) withObject:nil afterDelay:60.0f];
于 2009-11-23T00:25:19.020 に答える
3

コンソールを見ると、おそらく次のようなものが表示されます...

警告:アプリケーション名を時間内に起動できませんでした

警告:アプリケーション名の強制クラッシュレポート...

警告:クラッシュレポートが終了しました。

基本的に、メインスレッドを長時間スリープ状態にしたため、OSはアプリケーションの起動に失敗したと判断し、アプリを強制的に終了させます。メインスレッドがアクティブなままになるように、タイマーを使用して遅延を行う方がよいでしょう。

于 2009-11-22T23:29:34.760 に答える
0

現在の残酷なものとは異なる方法でスプラッシュ画面ロジックを実装することをお勧めします:)

おそらく、タッチ時またはタイムアウト後に、画面全体をカバーするUIViewを作成して、自己破壊することができます(removeFromSuperview)??

于 2009-11-22T23:31:48.287 に答える
0

ええと、iPhoneアプリを60秒間スリープさせる正当な理由はありません。一度もない。現在の形式のアプリがAppStoreに届かないように!:)

于 2009-11-23T00:05:15.893 に答える
0

フェードアウトするスプラッシュ画面を作成する方法を説明しているこのブログエントリをご覧ください。ログが表示されるまでの遅延時間を設定できるはずです。タイマーが作成された場所を確認します。

http://icodeblog.com/2009/03/18/iphone-game-programming-tutorial-part-3-splash-screen/

于 2009-11-23T00:10:53.173 に答える
0
    [NSThread sleepForTimeInterval:0.85];

私はあなたがこの方法を使うことができると思います。

于 2009-11-23T09:39:27.853 に答える