iOS

iOS 8 绘制图形的时候发生莫名crash

2017-04-14  本文已影响321人  ChangeWorld

报错信息是这样子的:

`Assertion failed: (CGFloatIsValid(x) && CGFloatIsValid(y)), function 
void CGPathMoveToPoint(CGMutablePathRef, const 
CGAffineTransform *, CGFloat, CGFloat), file Paths/CGPath.cc, line 
254.`

部分代码如下:

    CGFloat radius;
    NSInteger num = _itemsNumber;
    CGFloat x = half(self.frame.size.width);
    CGFloat y = half(self.frame.size.height);
    ctx = UIGraphicsGetCurrentContext();
    [colorRGB(255, 200, 0) setFill];
    CGContextSetAlpha(ctx, 0.6);
    CGContextSetLineWidth(ctx, 3);
    radius = maxRadius / ((NSNumber *)_arrayMaxCounts.lastObject).integerValue * ( (NSNumber *)_arrayRanks.lastObject).integerValue;
    CGContextMoveToPoint(ctx, x + radius, y);

调用CGContextMoveToPoint(ctx, x + radius, y)这个方法的时候, radius是不能为空的,逆推找到数组_arrayRanks_arrayMaxCounts初始化的时候都是空的,iOS 8的绘制规则可能不太一样(没有钻研精神的程序员不叫程序员,叫码农),所以在这之前应该先判断数组不能为空,为空return掉,等服务端数据返回,外界将数组传入,这样就不会出什么差错了.

记一笔,防重复踩坑.
上一篇下一篇

猜你喜欢

热点阅读