//聯(lián)系人:石虎QQ: 1224614774昵稱:嗡嘛呢叭咪哄
報錯: 一
'*** -[__NSArrayM objectAtIndex:]: index 1 beyond bounds[0 .. 0]'
報錯: 二
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI addObject:]: unrecognized selector sent to instance 0x4b17be0'
錯誤:NSArray 不能使用addObject:方法铣揉÷肺兀可能是在程序運行的過程中,NSMutableArray轉(zhuǎn)為了NSArray屯曹。
解決方案:核查數(shù)組损话,看看是否在NSArray 之后使用了addObject:方法 塞淹。
報錯: 三
當(dāng)我創(chuàng)建了一個NSMutableArray 對象的時候@property(nonatomic,copy)NSMutableArray *children;然后通過addObject運行就會報錯,[__NSArrayI addObject:]: unrecognizedselectorsenttoinstance解決方式:1. 在 ARC 環(huán)境下, 將 dataSource 修飾詞 改為strong2挠阁、通過理解症汹,我們知道addObject后的array其實是變了硫朦,可能內(nèi)存變大了,你可以理解成這個對象已經(jīng)不是原來的了,就相當(dāng)于沒有定義一個具體實例對象一樣烈菌。但通過@synthesize 默認(rèn)的setter不能保證copy就一定等于mutableCopy阵幸;所以我們需要自定義自己的setter方法。例如我的定義芽世,在.m中增加我們自己定義的setter方法,讓它進(jìn)行mutableCopy即可诡壁。-(void)setChildren:(NSMutableArray*)array{
if(children != nil)
{
children = nil;
}children = [arraymutableCopy];}3济瓢、把copy變成retain,因為不是copy創(chuàng)建新內(nèi)存和新賦值的話妹卿,原有實例對象就不會“全新”導(dǎo)致unrecognizedselectorsenttoinstance旺矾。
細(xì)節(jié)請看鏈接: http://blog.csdn.net/shihuboke/article/details/77018999
謝謝!!!