6

だから私はアプリストアから2回拒否されたアプリを持っており、本当に助けが必要です!

ウォッチドッグ タイマーが拒否され、最初に開いたときに強制終了されました。ただし、どのデバイスでもこれを再現できませんでした。xcode を使用すると、デバイスのビルドに時間がかかります (xcode からビルドすると、ウォッチドッグが切断されることがわかっています)。しかし、これを解決するのに役立ついくつかの質問があります。

  1. ウォッチドッグは考慮に入れますか、didFinishLaunchingWithOptions:それとも他の方法を呼び出しますか?

  2. プログラムで使用されるフレームワークの数は関係がありますか? もしそうなら、11のフレームワークは多すぎますか?

  3. アプリがデバイスにインストールされ、そのデバイスのプラグを抜いたら、ウォッチドッグ タイマーが再度有効になりますか?

  4. ウォッチドッグ タイマーに追加できるその他の機能は何ですか?

Apple は、別の可能性があると述べたAnother possibility could be a missing entitlement.. また、アプリストアのすべてのアプリにインストールする必要がありますか?

最初の数秒間の時間プロファイル

ここに画像の説明を入力

4

2 に答える 2

4

UI スレッドをブロックしている時間が長すぎます。この問題を解決するには、まずどのコードにそれほど時間がかかったのかを把握する必要があります。アプリのプロファイリングを行う価値があるかもしれません。シミュレーターはデバイスをエミュレートするのではなく、API のみをエミュレートすることに注意してください。お使いのコンピューターは iPhone よりも強力なため、実際のデバイスよりもはるかに高速に動作する可能性があります。RunXcode の左上をクリックして押したままにして、 を選択しますProfile。選択Time Profilerして数秒間実行します。プロファイラーを停止して、関数呼び出しのタイミングを分析します。プロファイリングを本当に理解するには、さらに深く掘り下げ、いくつかのチュートリアルや本を見つける必要があるかもしれないことに注意してください。

どの部分の実行速度が遅いかがわかるとき。それらをスレッドに入れることができます。簡単な方法は、Grand Central Dispatchを使用することです。開始するには、このチュートリアルにアクセスしてください。前半をスキップして、実際のスレッド ブロックに集中できます。API はdispatch_queue_createdispatch_asyncおよびdispatch_releaseです。

これにより、UI のブロックが解除されます。

于 2012-04-16T13:49:07.270 に答える
3

で多くの処理を行いますか

application:didFinishLaunchingWithOptions,
applicationDidBecomeActive,
applicationDidEnterBackground,
applicationWillResignActive or 
applicationWillTerminate? 

複数のファイル アクセス、データの読み込み/保存、同期ネットワーク アクセスなどにより、起動時またはユーザーの終了時にアプリケーションがフリーズし、ウォッチドッグによってアプリが強制終了される可能性があります。

この Apple Technical note は、ウォッチドッグが起動、一時停止、再開、終了のユーザー インターフェイス イベントのみを監視していることを示唆しています。上に挙げた。 http://developer.apple.com/library/ios/#qa/qa1693/_index.html

11 フレームワークは問題ありません。アプリで 11 を問題なく使用しました。

ホーム画面のアイコンをタップしてアプリを起動すると、ウォッチドッグ タイマーがアクティブになり、アプリを監視します。Xcode で実行またはデバッグを押してアプリを起動すると、ウォッチドッグはアプリを監視しません。

于 2012-04-16T13:24:05.923 に答える