[__NSCFString size]: unrecognized selector sent to instance 0x608000443300
NSString *path = [[NSBundle mainBundle]pathForResource:@"compose.plist" ofType:nil]; NSArray *btnINfo = [NSArray arrayWithContentsOfFile:path]; NSDictionary *dict = btnINfo[i]; [btn setImage:dict[@"icon"] forState:UIControlStateNormal];
最后一句将代码写错错误将[UIImage imageNamed:dict[@"icon"]写dict[@"icon"]成,但是Xcode没有报错,也没有警报,运行的时候崩溃 ,
全局断点显示崩溃的地方是在-(void)layoutSubviews方法的第一句
原因是:运行时系统会将dict[@"icon"]认为是一个UIImage,后面系统在布局子控件的时候会调用-(void)layoutSubviews方法,就会调用UIImage的size方法,而现在的UIImage是一个字符串,没有实现size方法 就会崩溃
所以再遇到这个崩溃原因的时候,可以先查找用到字符串设置空间的地方,比如设置image,应该说是尤其设置图片的时候,因为其他控件用到字符串的时候比较少
个人见解