6

勤めている会社で社内向けのエンタープライズアプリの開発を担当しています。私は理解できない大きな障害にぶつかりました。

アプリはオーディオ ユニットを使用します。私は 3 つの iPhone を持っています。

3gs - iOS 5.1.1
4 - iOS 5.1.1
5 - iOS 6

プロビジョニング プロファイルを使用すると、これらのデバイスでテスト ビルドを実行でき、すべて正常に動作します。自分の開発者アカウントとアドホック プロファイルを使用すると、すべて正常に動作します。企業でのワイヤレス配布用にビルドすると、すべての iOS 5.1.1 デバイスが機能しなくなります。

インストールの問題はありません。アプリは正しく読み込まれますが、オーディオ ユニット + 作成した循環バッファは地獄に落ちます。大規模なバッファ オーバーランが発生しているように見えますが、理由がわかりません。これが発生するのはエンタープライズ アカウントのみです。私はすべての正しいデータを取得しています。データはオーディオに正しく供給されています。循環バッファのサイズを非常に大きくすると、ここで正しいオーディオを非常に短時間で取得できます。またぼんやり。

テスト ビルドとエンタープライズ ビルドの根本的な違いを誰かが知っているかどうか疑問に思っています。2 つの間に大きな違いが見られる理由が理解できないため、私が従わないベスト プラクティスがいくつかある可能性はありますか。

注: 2 つのビルド間で行っている設定の変更はコード署名だけで、他には何もありません

4

1 に答える 1

1

あなたがコードを投稿しなければ、私は推測することしかできません。エンタープライズビルドはおそらく最適化でコンパイルされますが、テストビルドはコンパイルされません。最適化されたときにアプリケーションが不規則に動作する原因となる未定義の動作が導入された可能性があります。プロファイラーを実行するだけでなく、コードに対してアナライザーを実行して問題を修正することをお勧めします。問題を引き起こすコンパイラの最適化の例はここにあります:プログラムの実行を遅くするコンパイラの最適化

于 2012-12-04T18:04:41.707 に答える