給返回的網(wǎng)絡(luò)數(shù)據(jù)賦值時發(fā)現(xiàn)一個bug删顶,
創(chuàng)建對象
_imgUrls = [NSMutableArray new];
rsp[@"imgurl"] 是網(wǎng)絡(luò)返回數(shù)據(jù)咬清,為數(shù)組格式闭专,于是我在返回數(shù)據(jù)后這樣賦值
self.imgUrls = rsp[@"imgurl"];
再調(diào)用
[self.imgUrls removeObjectAtIndex:] ,
結(jié)果報錯:Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object'
說這是一個不可變的self.imgUrls數(shù)組, 然而 我創(chuàng)建self.imgUrls的時候旧烧,的確是用 [NSMutableArray new]創(chuàng)建的
真正的原因是:
在賦值 self.imgUrls = rsp[@"imgurl"] 的時候影钉, 是把一個不可變數(shù)組賦值給一個可變數(shù)組,所以即使聲明了NSMutableArray可變掘剪,也沒用!
我這樣解決:
先聲明另外一個數(shù)組 arr = rsp[@"imgurl"]平委,然后遍歷它,給self.imgUrls賦值
NSMutableArray *arr = rsp[@"imgurl"];
for (int i = 0; i < arr.count; i++) {
[self.imgUrls addObject:arr[i]];
}