一:問題:
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.
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.
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.
?
二:解決:
1:設置,傳說中是由于:一般式iOS6的時候使用這種方式,iOS7,8也兼容,但是到了iOS9就報了警告。最后驗證,沒鳥用.PS:至少我遇到的問題不是由于它引起的
2:原因簡單分析: drawView方法調用不合理.?使用UIView繪圖,只能在drawRect:方法中獲取相應的contextRef并繪圖。如果在其他方法中獲取將獲取到一個invalidate的ref并且不能用于畫圖。drawRect:方法不能手動顯示調用,必須通過調用setNeedsDisplay 或者 setNeedsDisplayInRect ,讓系統自動調該方法。
由于此處同事是使用了property 屬性的set方法先去初始化數據的并調用了UIBezierPath去繪圖,再去調用drawView,所以造成這樣的錯誤提示,其實程序并不會因此而奔潰,但是這非常影響畫圖速度,造成一定程度上的卡頓,給用戶體驗不好;
1:同事的錯誤做法:(同事寫的)
?
?
?
2:之后我改進了一下
?
?
?
3:錯誤提示消失了
?