今天发现一个bug,顺便记录一下
需求:展示一张图片(服务器端提供一个img_ratio字段来告诉你宽高比,图片宽度是屏幕宽度)
我这样写的
CGFloat imageHeight =HSWidth/[imgDic[@"img_ratio"] floatValue];
[image mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.imageBackView).offset(self.cellHeight+MarginNormal);
make.left.right.equalTo(self.imageBackView);
make.height.mas_equalTo(imageHeight);
}];
Bug:发现服务器img_ratio 为0时崩溃在masonry布局上
断点输出
解决:就是判断一下等于0然后return喽
if ([imgDic[@"img_ratio"] floatValue] == 0) {
return;
}
原因:0作为被除数然后被强转成了float类型导致得到的结果是无穷大,但是两个整型数相运算得到是还是整型
//结果为0.468
CGFloat tFloat = (CGFloat)375/800;
//结果为0
CGFloat tFloat = 375/800;
//结果为0
CGFloat tFloat = 1/0;
//结果为+lnf 代表正无穷
CGFloat tFloat = (CGFloat)1/0;