次のエラーが原因で、アプリがクラッシュします。
-[NSCFString count]: unrecognized selector sent to instance 0x612b060
誰かがそれが何を意味するのか、そしてどのように参照0x612b060で私のコードの行を見つけることができるのか教えてもらえますか?
次のエラーが原因で、アプリがクラッシュします。
-[NSCFString count]: unrecognized selector sent to instance 0x612b060
誰かがそれが何を意味するのか、そしてどのように参照0x612b060で私のコードの行を見つけることができるのか教えてもらえますか?
count
リリースされているか、まだ初期化されていないオブジェクト(おそらく、配列、ディクショナリ、セットなどのコレクション)でメソッドを呼び出しています。
NSCFStringでメッセージ「count」を送信しています。つまり、NSStringデータ型で「count」メソッドを呼び出しています。
コードを見つけるには、スタックトレースを使用できますが、実行しているのは次のとおりです。
NSArrayまたは(配列データ型)にNSStringデータを割り当て、カウントを試みます。
これは、適切に保持されていないコレクションオブジェクト(NSArray、NSDictionaryなど)があるために発生する可能性があります。
NSZombiesを使用して、リリースされたオブジェクトを見つけてください。
Get Info
Variables to be set in the environment
で変数を作成し、そのNSZombieEnabled
値をに設定しますYES
。それをアクティブにすることを忘れないでください。この問題のデバッグが完了したら、NSZombiesを非アクティブ化する必要があります。NSZombiesはメモリを解放せず、オブジェクトを解放済みとしてマークするだけです。
したがって、遅かれ早かれメモリ警告が発生することになります。
その前のチェックマークを削除するだけで、NSZombiesを非アクティブ化できます。
length
あなたはあなたのひもを呼ぶつもりでしたか?
多分誰かがこれを必要とするでしょう:私がこの種の問題を抱えていたとき、私は使用しました:
[ myarray retain];
その後
myarray = [NSArray arrayWithObjects: ...];
そしてそれはうまくいきました。アレイの破壊が早すぎたためだと思います。しかし、どうすればこのオブジェクトを解放できるのかわかりませんか?ただ[myarray autorelease]
?保持するのと反対の何かがありますか?
実用的な例:
時々、私がまだはっきりと理解していない実際的な違いがあります。オブジェクトで使用できない「メソッド」をvalueForKey
呼び出そうとするSOGo-3.1.4のコードでは機能しませんでした。ASProtocolVersion
context
`EXCEPTION: <NSException: 0x55f43f93e4d0> NAME:NSInvalidArgumentException REASON:-[WOContext ASProtocolVersion]: unrecognized selector sent to instance
一方は機能します(コード内の他の場所でオブジェクトobjectForKey
をクエリする通常の方法です)。context