//detailList 是MutaleArray
但是慨畸,data[@"detail_list"]返回的類型NSArray類型。
self.detailList = data[@"detail_list"];
- (NSMutableArray *)detailList {
if (_detailList == nil) {
_detailList = [[NSMutableArray alloc] init];
}
return _detailList;
}
//當(dāng)再次調(diào)用
[self.detailList addObjectsFromArray:pageList];
就會(huì)報(bào)錯(cuò)
[__NSArrayI addObjectsFromArray:]: unrecognized selector sent to instance
原因:此時(shí)的self.detailList已經(jīng)成為NSAarry類型玫氢,而沒有這個(gè)addObjectsFromArray方法,就會(huì)報(bào)錯(cuò)谜诫。
這個(gè)問題漾峡,其實(shí)可以用,基類指針指向子類對(duì)象的來分析
NSMutableArray 是子類
NSArray 是基類
如果以一個(gè)基指針指向派生類對(duì)象喻旷,那么經(jīng)由該指針只能訪問基礎(chǔ)類定義的函數(shù)
NSArray * pointArray = @[@"a", @"b"];
NSMutableArray *a = [[NSMutableArray alloc] initWithArray:pointArray];
NSArray * pointArr = a;
pointArr 還是只能訪問NSArray中的方法不能訪問NSMutaleArray中的方法
一般支持向上轉(zhuǎn)型
#######另外已經(jīng)錯(cuò)誤已經(jīng)很清楚的說明問題了
[__NSArrayI addObjectsFromArray:]: unrecognized selector sent to instance
__NSArrayI addObjectsFromArray
__NSArrayI中是沒有addObjectsFromArray方法的
由此可以聯(lián)想到