我正在尝试在数组上调用 addObject 时遇到无法识别的选择器异常。但是我的数组是 NSMutableArray,而不是 NSArray。我不明白为什么会这样。
我有以下课程:
@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
问题是什么?
TIA
(请关注实际的代码和问题,而不是讨论为什么我不在 A 的 init 中分配数组,除非相关。我想了解为什么现在的代码不起作用。谢谢)。