0

このiphoneアプリを起動すると、出力コンソールに次のエラーがスローされます。

-[__NSCFString stringValue]: unrecognized selector sent to instance 0x548ad0

そして、このスレッドキルでクラッシュします:

libsystem_kernel.dylib`__kill:
0x360c0840:  mov    r12, #37
0x360c0844:  svc    #128
>> 0x360c0848:  blo    0x360c0860                ; __kill + 32

コードのどこに問題があるのか​​を確認できるように、これをデバッグするための最良の方法は何ですか?

4

4 に答える 4

2

ブレークポイントナビゲーターを選択します。これは、xcodeナビゲーションバー(画面の左側)で最後から2番目に選択されたものです。

左下に+記号があり、クリックして[例外ブレークポイントの追加]を選択します。例外ブレークポイント、例外:ALL、ブレーク:スロー時、アクション:アクションの追加にチェックマークを付けます。(とにかくデフォルトの選択であるはずです)。[追加]をクリックすると、プログラムは例外が発生した場所で停止するはずです。

于 2012-09-14T18:54:04.267 に答える
0

stringValueオブジェクトのメソッドを呼び出そうとしていNSStringます。これは機能しません。あなたはコードを投稿していませんが、私はあなたがそのようなことをしていると思います:

NSString *str1 = <#you get your string from somewhere#>;
NSString *str2 = [str1 stringValue]; //crash

stringValueクラッシュをローカライズするには、例外ブレークポイントを設定するか、プロジェクトで呼び出しを探します。

于 2012-09-14T18:49:59.690 に答える
0

1)Xcodeで、Breakpoint Navigatorを使用して、Objective-C例外にブレークポイントを設定します。

2)使用している場所を探しstringValue、正しいタイプのオブジェクトを使用していることを確認します。(それはあなたがそれを文字列で呼んだと言います;それは多分何か他のものでなければなりませんNSNumberか?)

stringValue3)メッセージを受け取っていると思われるものが早期に割り当て解除された場合に備えて、ゾンビを有効にします。

于 2012-09-14T18:50:57.050 に答える
0

「認識されないセレクターがインスタンスXXXに送信されました」というエラーメッセージは、アプリが存在しないメソッドを呼び出そうとしていることを意味します。多くの場合、これはメソッドが間違ったオブジェクトで呼び出されているために発生します。ここで、問題のオブジェクトはNSString(メモリアドレス0x548ad0にあります)であり、メソッドはstringValueです。

コードのどこでこのエラーが発生したかを把握するため。ソースファイルの名前と誤動作している行の番号を見つける必要があります。これは、コールスタック(スタックトレースまたはバックトレースとも呼ばれます)を使用して実行できます。

ブレークポイントを維持すると、アプリがクラッシュするたびに、Xcodeウィンドウの左側のペインがデバッグナビゲーターに切り替わります。アプリでアクティブなスレッドが表示され、クラッシュしたスレッドが強調表示されます。

于 2012-09-15T05:40:04.293 に答える