[__NSCFString size]崩溃

[__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,应该说是尤其设置图片的时候,因为其他控件用到字符串的时候比较少

个人见解

你可能感兴趣的:([__NSCFString size]崩溃)