0

次のエラーが原因で、アプリがクラッシュします。

-[NSCFString count]: unrecognized selector sent to instance 0x612b060

誰かがそれが何を意味するのか、そしてどのように参照0x612b060で私のコードの行を見つけることができるのか教えてもらえますか?

4

6 に答える 6

5

countリリースされているか、まだ初期化されていないオブジェクト(おそらく、配列、ディクショナリ、セットなどのコレクション)でメソッドを呼び出しています。

于 2011-03-01T09:37:36.700 に答える
3

NSCFStringでメッセージ「count」を送信しています。つまり、NSStringデータ型で「count」メソッドを呼び出しています。

コードを見つけるには、スタックトレースを使用できますが、実行しているのは次のとおりです。

NSArrayまたは(配列データ型)にNSStringデータを割り当て、カウントを試みます。

于 2011-03-01T09:38:33.433 に答える
2

これは、適切に保持されていないコレクションオブジェクト(NSArray、NSDictionaryなど)があるために発生する可能性があります。

NSZombiesを使用して、リリースされたオブジェクトを見つけてください。

  1. XcodeのExecutablesグループの実行可能ファイルを右クリックします。選択するGet Info
  2. [引数]タブを選択します。
  3. Variables to be set in the environmentで変数を作成し、そのNSZombieEnabled値をに設定しますYES。それをアクティブにすることを忘れないでください。
  4. ブレークポイントをオンにして、コードを実行します。
  5. デバッガーは、早期に解放されるオブジェクトをポイントします。

この問題のデバッグが完了したら、NSZombiesを非アクティブ化する必要があります。NSZombiesはメモリを解放せず、オブジェクトを解放済みとしてマークするだけです。
したがって、遅かれ早かれメモリ警告が発生することになります。
その前のチェックマークを削除するだけで、NSZombiesを非アクティブ化できます。

于 2011-03-01T09:40:46.910 に答える
0

lengthあなたはあなたのひもを呼ぶつもりでしたか?

于 2011-03-01T10:49:58.110 に答える
0

多分誰かがこれを必要とするでしょう:私がこの種の問題を抱えていたとき、私は使用しました: [ myarray retain]; その後 myarray = [NSArray arrayWithObjects: ...]; そしてそれはうまくいきました。アレイの破壊が早すぎたためだと思います。しかし、どうすればこのオブジェクトを解放できるのかわかりませんか?ただ[myarray autorelease]?保持するのと反対の何かがありますか?

于 2011-09-13T09:27:00.953 に答える
0

実用的な例:

時々、私がまだはっきりと理解していない実際的な違いがあります。オブジェクトで使用できない「メソッド」をvalueForKey呼び出そうとするSOGo-3.1.4のコードでは機能しませんでした。ASProtocolVersioncontext

`EXCEPTION: <NSException: 0x55f43f93e4d0> NAME:NSInvalidArgumentException REASON:-[WOContext ASProtocolVersion]: unrecognized selector sent to instance

一方は機能します(コード内の他の場所でオブジェクトobjectForKeyをクエリする通常の方法です)。context

https://github.com/inverse-inc/sogo/pull/217/filesを参照してください

于 2016-07-20T12:06:45.120 に答える