一:问题:blog
Jan 16 15:49:53 CUBOT Band Ⅲ[2082] <Error>: CGContextSetLineWidth: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.it
Jan 16 15:49:53 CUBOT Band Ⅲ[2082] <Error>: CGContextSetLineJoin: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.用户体验
Jan 16 15:49:53 CUBOT Band Ⅲ[2082] <Error>: CGContextSetLineCap: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.date
Jan 16 15:49:53 CUBOT Band Ⅲ[2082] <Error>: CGContextSetMiterLimit: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.程序
Jan 16 15:49:53 CUBOT Band Ⅲ[2082] <Error>: CGContextSetFlatness: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.方法
二:解决:im
1:设置,传说中是因为:通常式iOS6的时候使用这种方式,iOS7,8也兼容,可是到了iOS9就报了警告。最后验证,没鸟用.PS:至少我遇到的问题不是因为它引发的数据
2:缘由简单分析: drawView方法调用不合理. 使用UIView绘图,只能在drawRect:方法中获取相应的contextRef并绘图。若是在其余方法中获取将获取到一个invalidate的ref而且不能用于画图。drawRect:方法不能手动显示调用,必须经过调用setNeedsDisplay 或者 setNeedsDisplayInRect ,让系统自动调该方法。img
因为此处同事是使用了property 属性的set方法先去初始化数据的并调用了UIBezierPath去绘图,再去调用drawView,因此形成这样的错误提示,其实程序并不会所以而奔溃,可是这很是影响画图速度,形成必定程度上的卡顿,给用户体验很差;兼容
1:同事的错误作法:(同事写的)
2:以后我改进了一下
3:错误提示消失了