Objective-C で今日、ちょっとハマッたのでメモ。
NSMutableArray
な変数をコピーする時は、copy
メソッドは使えない。使えなくはないけど、NSArray が返ってくる。ので、insert とか add とか実行すると実行エラーになる。
で、どうするかというと、mutableCopy
を使う。
NSMutableArray* foo = [NSMutableArray array];
(誤) NSMutableArray* bar1 = foo.copy;
(正) NSMutableArray* bar2 = [foo mutableCopy];
NSCopying
ぼくは、今回 NSCopying のコーディングでハマった。NSCopying については、他のサイトを参照してもらうことにして、ぼくが書いたコードはこんな感じ。
- (id)copyWithZone:(NSZone *)zone {
MYClass* clone = [super copyWithZone:zone];
clone.foo = [_foo mutableCopyWithZone:zone];
return clone;
}
まったく、コピーした後で addObject が通らなくなるんだからびっくりしたよ。
No comments:
Post a Comment