私にはクラスがあります、クラスの人と言います。クラスよりもいくつかのNSMutableArrayがあります。
@property NSMutableArray *arrayOne;
@property NSMutableArray *arrayTwo;
...
次に、そのクラスをコピーして、関数からクラスを返し、そのコピーを使用してデータを変更できるようにします。同じアドレスへの別の参照ではなく、オブジェクトの新しいコピーをメモリに入れたい。
これを行うために、Person.mにこれを実装しました。
-(id)copyWithZone:(NSZone *)zone
{
Person *copy = [[Person allocWithZone:zone] init;
copy.arrayOne = [NSMutableArray arrayWithArray:self.arrayOne];
copy.arrayTwo = [NSMutableArray arrayWithArray:self.arrayTwo];
...
return copy;
}
これまでのところ、これは私が望むように機能しますが、コピーの配列を並べ替えようとすると、エラーが発生します:-[__ NSArrayI sortUsingSelector:]:認識されないセレクターがインスタンス0x100108a30に送信されました
元の配列のタイプは「_NSArrayM」ですが、コピーは「 _NSArrayI」です。
それで私は何を間違えましたか?NSArchiverとNSUnarchiverを使用したディープコピーについて聞いたことがあります...それを使用する必要がありますか?申し訳ありませんが、私はCとObjective-Cにまったく慣れていません...:D
あなたがこれから私を助けてくれることを願っています。=)
私の「学校英語」について申し訳ありません。
乾杯、ニック
編集:配列はNSStringオブジェクトで構成されているため、次を使用できます
sortUsingSelector:@selector(caseInsensitiveCompare:)
配列をソートします。