一:問題: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:錯誤提示消失了