//detailList 是MutaleArray
但是,data[@"detail_list"]返回的类型NSArray类型。
self.detailList = data[@"detail_list"];
- (NSMutableArray *)detailList {
if (_detailList == nil) {
_detailList = [[NSMutableArray alloc] init];
}
return _detailList;
}
//当再次调用
[self.detailList addObjectsFromArray:pageList];
就会报错
[__NSArrayI addObjectsFromArray:]: unrecognized selector sent to instance
原因:此时的self.detailList已经成为NSAarry类型,而没有这个addObjectsFromArray方法,就会报错。
这个问题,其实可以用,基类指针指向子类对象的来分析
NSMutableArray 是子类
NSArray 是基类
如果以一个基指针指向派生类对象,那么经由该指针只能访问基础类定义的函数
NSArray * pointArray = @[@"a", @"b"];
NSMutableArray *a = [[NSMutableArray alloc] initWithArray:pointArray];
NSArray * pointArr = a;
pointArr 还是只能访问NSArray中的方法不能访问NSMutaleArray中的方法
一般支持向上转型
#######另外已经错误已经很清楚的说明问题了
[__NSArrayI addObjectsFromArray:]: unrecognized selector sent to instance
__NSArrayI addObjectsFromArray
__NSArrayI中是没有addObjectsFromArray方法的
由此可以联想到