2010-12-08 30 views
2

私は奇妙な問題を抱えています。iPadアプリがクラッシュする4.2ディストリビューションビルド

iPadストアのiPadアプリがあります。これは、3.2が唯一 のiOS for ipadだったときにリリースされました。アプリはこのiOSで正常に動作しましたが、ipad の4.2.1が出てすぐに新しいユーザーに更新されたユーザーの一部は、 のUIBarButtonItemを押すとクラッシュします。それは 各iOSの上で実行されているとまったく同じアプリをしたので、iOSの 4.2.1が出てきたときにiOSの3.2から暫定的に私が主催でsymbolicatingと表示した後、まだ私が唯一の4.2

上でこの問題を抱えていた何の更新を提出していません配布ビルドクラッシュレポート 私は少なくともこれを引き起こしているコードの行を参照することができるよ...

while(i < [filteredData count]) { 

のthatsそれは!! ... whileループの中だけの簡単なチェック。クラッシュの最後のもの ログは上記のコード行を指しています....

filteredDataは、この時点で に確実に割り当てられ/初期化されたNSMutableArrayです。これは実際には の問題がないこのコードの別の部分で使用されています。 は再び、このコード行は、iOS 3.2に何の問題私のアプリを与えなかったが、iOSの上で私は、デバッグでXcodeのを経由して自分のデバイスにアプリをインストールするか、それが動作設定を解除するとEXC_BAD_ACCESS(SIGSEGV)

を引き起こし それを4.2.1完璧だが、AppStore(ディストリビューションビルド)からインストールすると、クラッシュし、4.2でのみ! 3.2

アプリのデバッグと分布のモードで完璧に動作し

アプリ

だけ明確にする

は..... 4.2

に配布モードで4.2 BUTアプリがクラッシュにデバッグモードで完璧に動作します何かご意見は?私は混乱しているcuzを..... /あなたが

デバッグ

で問題を得ることができますいけない、特にとして

+0

ターゲットの情報のビルドタップに入ると、ディストリビューションとデバッグの設定にはどのような違いがありますか? (フィールドに違いがあるかどうかを確認する方法は、「すべての設定」を選択し、スクロールダウンして、「複数の値」またはチェックマークでダッシュを探します) –

+0

予想されるパスの違いを確認します。ディストリビューション - iphoneos)。 "ビルド済み製品の検証"は、デバッグ時ではなく、配布時にチェックされます。 "コピー中にデバッグシンボルを取り除く"という設定は、配布時にチェックされますが、デバッグ時にはチェックされません。デバッグでは「最適化レベル」は「なし」、配布では「最速で最小」です。他のCフラグとC++フラグは両方ともデバッグ時に空白ですが、配布時には "-DNS_BLOCK_ASSERTIONS = 1" – freddyD

答えて

3

はおそらくリリースでは、コンパイラによって作られた最適化が原因これを構築する時間を割いて 感謝を失いましたリファクタリングすることができます。

NSUInteger count = [filteredData count]; 
while(i < count) { 

またはループ内でfilteredDataの突然変異ですか?

NSUInteger count = [filteredData count]; 
while(i < count) { 
    blah; 
    blah; 
    count = [filteredData count]; 
} 
+0

ええ、リファクタリングはまったく問題ありません。問題は、それが助けられたかどうかをどうやって確認するのですか?前述のように、Distributionビルドでのみ発生するので、どうすれば確認できますか?あなたがAppStoreの承認プロセスが最速ではないことを知っているかもしれないので、これを狭めるには数週間から数週間かかるでしょう...ユーザーが迷惑にならないように、修正なしでアップデートを続けるでしょう – freddyD

+0

Nopeはリリースとして再構築しますモードではなく、あなたのdev証明書で署名してください。これを見てください。 http://stackoverflow.com/questions/4288964/cant-deploy-a-release-version-with-developer-profile最適化レベルに責任があるかどうかを検証します。目標設定で「最適化レベル」を「最速+最小」に変更したい場合 –

+0

うーん..それは最適化の問題だと思われます。レベルを変更するとクラッシュが表示されますが、実際には起こっているのを見て修正することができます。奇妙なことは、たとえループが入力されていなくても、whileループ内にクラッシュを引き起こす行/コード行です!少なくとも私は今それを見ることができます...ありがとう! – freddyD

関連する問題