Недопустимый контекст CGContext 0x0
: CGContextSetFillColorWithColor: недопустимый контекст 0x0. Это серьезная ошибка. Это приложение или используемая им библиотека использует недействительный контекст и тем самым способствует общей деградации стабильности и надежности системы. Это уведомление является любезностью: пожалуйста исправить эту проблему. Это станет фатальной ошибкой в предстоящем обновлении.
: CGContextSetStrokeColorWithColor: недопустимый контекст 0x0. Эта является серьезной ошибкой. Это приложение или используемая им библиотека использует недействительный контекст и тем самым способствует общему ухудшение стабильности и надежности системы. Это уведомление является любезность: пожалуйста, исправьте эту проблему. Это станет фатальной ошибкой в предстоящее обновление.
и аналогичные ошибки, повторяющиеся с:
- CGContextSaveGState
- CGContextSetFlatness
- CGContextAddPath
- CGContextDrawPath
- CGContextRestoreGState
- CGContextSaveGState
- CGContextSetFlatness
- CGContextAddPath
- CGContextDrawPath
- CGContextRestoreGState
- CGContextSetFillColorWithColor
- CGContextSetStrokeColorWithColor
- CGContextSetFillColorWithColor
- CGContextSetStrokeColorWithColor
- CGContextGetBlendMode
- CGContextSetBlendMode
- и многое другое...
В моем приложении я не использую материал CGContext. У меня просто есть UITextView
, UIButton
и UILabel
. Не много добавленных кодов. Просто установите содержание UITextView
на:
[self.text_view setText:@"123"];
Как разрешить ошибку?
Я использую Xcode 5.0 (сборка 5A1413), iOS 7 Simulator (64-разрядная Retina 4 "), Mac OS X 10.8.5
Ответы
Ответ 1
Попробуйте следующее: в xcode добавьте символическую точку останова в CGPostError. (Добавить символическую точку останова и в поле "Тип символа" CGPostError)
При возникновении ошибки отладчик прекратит выполнение кода, и вы можете проверить стек вызовов методов и проверить параметры.
Ответ 2
У меня были подобные ошибки при использовании CGContext и UIBezierPaths, я использовал подход Juraj Antas, и я сразу нашел причину.
Я использую UIImageView с использованием CGContext. Сначала я создаю UIBezierPath, затем рисую его с помощью CGContextAddPath(..)
. Я узнал, что я устанавливал цвет при создании UIBezierPath, который xcode не нравится и в любом случае перезаписывается CGContextSetStrokeColorWithColor(..)
. Как только я удалил UIColor.whiteColor().set()
из моего кода создания UIBezierPath, ошибки исчезли.
Ответ 3
Спасибо за предложение от @shnaz.
Я столкнулся с той же проблемой, и мне это стоило несколько раз, пока я не смог найти проблему, желая, чтобы мое решение помогло другим, если они столкнулись с той же проблемой.
Я, вероятно, недостаточно читал документацию, и я новичок в создании UIBezierPath. Оказывается в XCode6, .stroke()
и .fill()
иногда вызывает недопустимый контекст 0x0.