配列で addObject を呼び出そうとすると、認識されないセレクタ例外が発生します。ただし、私の配列は NSArray ではなく、NSMutableArray です。なぜこれが起こっているのかわかりません。
私は次のクラスを持っています:
@interface A : NSObject
@property (nonatomic, copy) NSMutableArray* children;
- (id) init;
- (void) addChild: (A*) child;
@end
@interface B : A
- (id) init;
@end
@implementation A
- (id) init
{
self = [super init];
return self;
}
- (void) addChild: (A*) child
{
[self.children addObject:child];
}
@end
@implementation B
-(id) init
{
self = [super init];
if (self != nil)
{
self.children = [[NSMutableArray alloc] init];
}
return (self);
}
次に、タイプ B のオブジェクトを作成して [b addChild: anObject] を呼び出すと、認識されないセレクターが取得され、その理由がわかりません。
出力は次のとおりです。
2013-04-08 14:31:08.046 otest[13381:7e03] -[__NSArrayI addObject:]: unrecognized selector sent to instance 0x17759c0
何が問題ですか?
ティア
(関連性のない限り、なぜ A の init に配列を割り当てないのかという副次的な議論ではなく、実際のコードと問題に注目してください。そのままのコードが機能しない理由を理解したいと思います。ありがとうございます)。