1

iPhoneアプリレビューチームによるレビュー時にアプリケーションが機能しなかったため、私のアプリケーションは拒否されました。アプリケーションは単語をテーブルビューにロードすることになっていますが、レビュー中にはロードしませんでした。しかし、アプリケーションは私のiPhoneで完全に機能します。アプリケーションが1つのiPhoneで完全に機能するが、レビュープロセスで使用されるiPhoneでは機能しない理由について何か提案をいただけますか?

技術的な詳細は次のとおりです。

  1. プロジェクトは、Mac OS X 10.6.2(10C540)を実行しているMacBookProでコンパイルされました。
  2. Xcodeバージョン3.2.164ビットXcodeIDE:1613.0 Xcodeコア:1614.0 ToolSupport:1591.0
  3. ベースSDKバージョン3.1.3
  4. 最適化レベル:最速、最小[-Os]
  5. 私のiPhoneは3.1.3OSの3GSです

メソッド-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPathが呼び出されていないようです。このメソッドは、@ interface WordTableViewController:GenericTableViewControllerとして定義されたデリゲートにあり、クラスGenericTableViewControllerは@interface GenericTableViewController:UITableViewControllerとして定義されています。

私の開発のある時点で、iPhoneでリリースバージョンをデバッグすると、-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPathが呼び出されていないことが判明したため、上記が当てはまると思われます。同じiPhoneでデバッグバージョンをデバッグするときに呼び出されていました。私は数日間の調査の後にその問題を解決しました。リリース構成の最適化レベルを変更してから、元の値に戻すだけで解決しました。これは私には非常に奇妙でした。

問題の最新のアプリ送信では、機能しているリリース構成を複製して、配布構成を再作成しました。次に、その配布構成を複製して、アドホック構成を作成しました。これで、アプリケーションはiPhoneでリリース、デバッグ、およびアドホック配布のために完全に機能します。ただし、Appleでは機能しません。

あなたのコメントは非常に高く評価されます!

4

2 に答える 2

1

考慮すべきことが1つあります。NSUserDefaults。

テストケースを実行すると、UserDefaultsが次のようなテストケースがあります。

  1. 空。
  2. 破損しています。

Appleはユーザーのデフォルトなしでアプリを起動します。時々クリアしないと、シミュレーターとターゲットハードウェアの両方を備えたテストベッドにデフォルトが保存されます。

NSUserDefaultsを使用して状態データを保存していない場合は、より多くの情報が必要になります。

于 2010-02-26T06:02:58.150 に答える
0

Steven が提案するように (アプリケーションを iPhone から完全に削除して再インストールする) クリーンな状態から始めることは別として、デバイス間で一貫性のない動作の最大の原因は、メモリとスレッドに関連しているようです。

あなたは iPhone 3G S を使用していると述べていますが、これは iPhone / iPod touch の古いモデルよりも大幅に多くのメモリを搭載しています。可能であれば、これらの古いデバイスのいずれかでアプリケーションを自分でテストするか、アプリケーションのベータ テストを行ってくれる人を見つけてください (動作するアドホック ビルドがあると述べたので、これにはほとんどの方法があります)。これらのデバイスのいずれかにアクセスできない場合は、メモリ モニター (ObjectAlloc ではない) インストルメントを使用してデバイスでアプリケーションを実行し、アプリケーションのピーク時のメモリ使用量を観察します。いつでも 20 MB を超える場合は、古いデバイスでメモリ不足の警告が送信されている可能性があり、アプリケーションが適切に処理していない可能性があります。ハードウェア | ハードウェアを使用して、シミュレーターで人為的にメモリ不足の警告を誘発することができます。メモリ警告もシミュレートして、何が起こるかを確認します。

処理にバックグラウンド スレッドを使用すると、非決定的な動作が発生する可能性もあります。iPhone 3G S は、初期モデルの iPhone / iPod touch よりもはるかに高速なプロセッサを搭載しているため、お使いのデバイスではそれらのデバイスとは異なる順序で実行される可能性があります。共有リソースへのアクセスを適切にロックしており、バックグラウンド スレッドで UI の更新を実行していないことを確認してください。

于 2010-02-26T13:55:07.000 に答える