0

私は開発者を支援しようとしているプロジェクト マネージャーです。

提出の準備が整ったビルドがありました。クラッシュはなく、テストは iPad で行われました。翌日、iPod と iPhone 3G でテストを開始したところ、大量のクラッシュが発生していることに気付きました。ビルドを iPad に再インストールすると、そこにも多数のクラッシュが表示されました。

デバイスを再起動してアプリを再インストールすると、クラッシュはまったく発生していないように見えました。最初の数分間はすべて問題ないように見えましたが、その後クラッシュが発生しました。奇妙なことに、アプリは後で簡単にクラッシュします。

クラッシュは主にアプリケーションの 1 つの特定の画面で発生します。クラッシュは特定のアクションに固有のものではないようです。画面にデータを入力するためにサードパーティの API に接続しており、Restkit を使用しています。クラッシュは、Restkit が原因のように見えることがあります。以下は、取得したエラー ログの例です。

0   libobjc.A.dylib                0x34f70ca4 objc_msgSend + 28
1   CoreFoundation                 0x325ae0b8 __CFBasicHashStandardRetainValue + 8
2   CoreFoundation                 0x325abb30 __CFBasicHashReplaceValue + 44
3   CoreFoundation                 0x32505f98 CFDictionarySetValue + 68
4   CoreFoundation                 0x3250c94e -[__NSCFDictionary setObject:forKey:] + 54
5   Foundation                     0x34d8a31a -[NSMutableDictionary(NSKeyValueCoding) setValue:forKey:] + 10
6   nameofapp                      0x000ae958 -[RKClient setValue:forHTTPHeaderField:] (RKClient.m:173)
7   nameofapp                      0x000086ae -[WebServer addCustomHeaders:] (WebServer.m:140)
8   nameofapp                      0x000088ea -[WebServer getDoD:objectTarget:] (WebServer.m:197)

WebServer.m:140  [[objectManager client] setValue:@"text/json" 
                               forHTTPHeaderField:@"X-ZFWS-Accept"];
4

1 に答える 1

0

2つのこと-まず、より多くの情報が必要です。そのクラッシュログの残りの部分は何と言っていますか?次に、同様に重要なことですが、iPhone 3GでRestKit(またはその他のこと)を実行している場合は、「CompileforThumb 」がオフになっていることを絶対に確認する必要があります。ARMv6アーキテクチャの場合。ARMv7では「CompileforThumb」をオンにし、ARMv6ではオフにするだけで、さまざまな不思議なクラッシュの多くが解消されたことに気づきました。iPhone 3G(および場合によってはiPod)は、ThumbをサポートしていないARMv6アーキテクチャを使用しています。v6でThumbをオンにすると、チップが不正な命令を受け取っているため、Thumbがどのように機能するか(または機能しないか)がわかりません。ただし、iPhone 4やiPadなどの新しいデバイスでは速度が大幅に向上するため、単にThumbをオフにしないでください。

Xcodeプロジェクトで、ビルド設定を開き、「Compile for Thumb」のタイトルをクリックしてから、ギアメニューから「AddBuildSettingCondition」オプションを選択します。「AnySDK」を「AnyiOS」に変更し、「AnyArchitecture」を「ARMv6」に変更してから、「Value」がオフになっていることを確認します。次に、同じことを実行して、ARMv7の別のビルド条件を作成し、オンにする値を選択/チェックします。

RestKitライブラリでは、さまざまなターゲットごとにこれを実行する必要がある場合があります。

于 2011-07-31T22:48:09.260 に答える