だから私はNSzombieを取得していますそしてそれはこれを言います
-[__ NSArrayI _cfTypeID]:割り当て解除されたインスタンスに送信されたメッセージ
それが何であるかについて何か考えはありますか?NSタイプだと思っていたのですが、おそらく配列だと思います。
はい—それはある種の配列になります。単一のクラスではなく、ほとんどの基礎タイプはクラスクラスターです。したがって、配列をどのように初期化するかは、どのサブクラスが返されるかに正確に影響しNSArray
ます。
正確な動作は文書化されておらず、基本的に時間の経過とともに変化することが保証されていますが、たとえば、エントリ数が特定未満の不変配列を作成した場合、システムは単一のリンクされた配列を返し、単純な線形検索として検索を実行することを決定する場合があります。しきい値を超えるものを作成すると、代わりに、検索用のある種の階層ロジックを追加する配列が作成される場合があります(または、ユーザーが配列の検索を開始した場合に適切な階層テーブルを作成するロジックが含まれている可能性があります)。
学ぶべき関連レッスン:
isMemberOfClass:
正しく動作することを期待しないでください。isKindOfClass:
基礎クラスの可変バージョンと不変バージョンを必ずしも区別できるとは限りません。Appleは、これらのクラスを区別し、プライベートとしてフラグを立てる方法を必要としているため、アンダースコアとサフィックスが必要になります。__NSArrayI
実際には、バニラ不変の配列だと思います。
基本的に、これはNSArray
オブジェクトが既に割り当て解除されていることを意味します。の何かがのプライベート メソッドFoundation.framework
にアクセスしようとしてクラッシュしました。NSArray
_cfTypeID
そして、なぜオブジェクトに_cfTypeID
メソッドがあるのか という質問について。のコア財団の対応物。2種類は「通行料無料橋」と互換性があります。したがって、実際にはAppleはそのメソッドを内部使用に使用しています。これについてより深く理解したい場合。http://code.google.com/p/cocotron/source/browse/Foundation/NSArray/NSArray.mにアクセスできます。これは Cocotron の NSArray の実装です。アップルの実装と同じではありませんが、それでも実装は似ています。NSArray
NSArray
CFArray