0

App Store に提出した iPhone アプリを作成しました。このアプリは、App Store に約 1 年間掲載されています。基本的には faceBook ログイン ボタン があります。ある晴れた日、iPhone 4、iPhone 4s で Facebook のログイン ボタンをクリックした瞬間にクラッシュしました。Macbookpro で実行しようとすると、クラッシュしました。「キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: '-[NSNull lowercaseString]: 認識されないセレクターがインスタンス 0x2125ce8 に送信されました' ....

それは私の iPhone 3Gs で正常に動作します...私を助けてください。Facebook の更新されたメソッドに関連するものですか、それとも iPhone のバージョンに関連するものですか。FBrequest が呼び出された直後にアプリがクラッシュします。

4

1 に答える 1

1

NSNullを指すように設定された文字列がアプリにあるようです。その文字列を小文字にしようとすると、アプリがクラッシュします。NSNullはNSNull型の静的オブジェクトを指しているため、「lowercaseString」というメッセージを送信しようとすると、アプリがクラッシュします。(それがゼロだった場合、Objective-Cは単にメッセージを無視します)

以前は値に設定されていた文字列がどこかにある可能性がありますが、何らかの理由で削除され、NSNullに設定されていますか?FaceBook-APIの変更が原因である可能性がありますが、サーバーが送信する内容の変更、Facebookアカウントのさまざまな情報などが原因である可能性もあります。使用しているパーサーは、サーバーからNULL値が送信されるたびに、nilではなくNSNullを設定している可能性があります。

iPhone3GSでは動作が異なるため、Facebookとはまったく関係がない可能性があることに注意してください。

小文字にしようとしているコード内のNSString値を探し回ることができます。デバッガーを使用して、NSNullタイプの文字列を識別してみてください。次のように、文字列をNSNullと比較できます。

if (text == (id)[NSNull null]) {
    // String is NSNull!
}
于 2012-06-21T08:14:13.533 に答える