今天發現一個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布局上
斷點輸出
屏幕快照 .png
解決:就是判斷一下等于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;