根據(jù)報(bào)錯(cuò)調(diào)用的方法名, 可能某個(gè)對(duì)象被當(dāng)作另一個(gè)對(duì)象使用了
1.instance對(duì)象過早的釋放掉了,指針雖然還是指向那塊內(nèi)存地址,但內(nèi)存實(shí)際已經(jīng)被釋放掉了霉撵,自然也就無法識(shí)別方法了浙于。解決方法:如果是instance是屬性的話,首先確認(rèn)訪問修飾符是否正確堂湖,比如該用copy的地方錯(cuò)用了retain等闲先;如果不是的話状土,那就沒啥好辦法了,加斷點(diǎn)伺糠,一步步查看源碼蒙谓,看是否多了release,對(duì)于每一次instance調(diào)用的地方训桶,都打印其內(nèi)容彼乌。
2.該對(duì)象沒有這個(gè)方法,檢查一下方法參數(shù)跟調(diào)用該方法時(shí)參數(shù)是否匹配(尤其注意該方法的.h文件和.m文件中的方法聲明是否一致渊迁。我就由于粗心大意慰照,.m文件中方法名寫錯(cuò)一個(gè)字母,造成.h文件中聲明的方法實(shí)際調(diào)用時(shí)琉朽,找不到該方法的具體實(shí)現(xiàn))毒租。
例子:
-[UIView setSelected:]: unrecognized selector sent to instance 0x7ff3f35b1070
可能是誤將uiview當(dāng)UIButton使用,調(diào)用了setSelected
注:Person為NSObject
-[Person length]: unrecognized selector sent to instance 0x7ff3f35b1070
錯(cuò)誤將Person當(dāng)做NSString來使用,比如
id obj = [[Person alloc] init];
NSString *string = obj;
string.length;
-[Person count]: unrecognized selector sent to instance 0x7ff3f35b1070
誤將Person當(dāng)數(shù)組使用
id obj = [[Person alloc] init];
NSArray *array = obj;
array.count;
-[Person setObject:forKeyedSubscript:]: unrecognized selector sent to instance 0x7ff3f35b1070
錯(cuò)誤將Person當(dāng)做NSMutableDictionary來使用