Я прочитал как можно больше результатов поиска по этой страшной проблеме, к сожалению, каждый из них, кажется, фокусируется на вызове определенной функции.
Моя проблема в том, что я получаю одну и ту же ошибку от нескольких функций, которые, как я предполагаю, вызываются из функций, которые я использую.
Что еще хуже, фактический код находится в пользовательской частной среде, которая импортируется в другой проект, и, как таковая, отладка не так проста?
Кто-нибудь может указать мне правильное направление? У меня такое чувство, что я вызываю определенные методы неправильно или с плохим контекстом, но вывод xcode не очень полезен на этом этапе.
: CGContextSetFillColorWithColor: неверный контекст 0x0. Это серьезная ошибка. Это приложение или используемая им библиотека используют недопустимый контекст и тем самым способствуют общему снижению стабильности и надежности системы. Это уведомление является любезным: пожалуйста, исправьте эту проблему. Это станет фатальной ошибкой в предстоящем обновлении.
: CGContextSetStrokeColorWithColor: неверный контекст 0x0. Это серьезная ошибка. Это приложение или используемая им библиотека используют недопустимый контекст и тем самым способствуют общему снижению стабильности и надежности системы. Это уведомление является любезным: пожалуйста, исправьте эту проблему. Это станет фатальной ошибкой в предстоящем обновлении.
CGContextSaveGState: недопустимый контекст 0x0. Это серьезная ошибка. Это приложение или используемая им библиотека используют недопустимый контекст и тем самым способствуют общему снижению стабильности и надежности системы. Это уведомление является любезным: пожалуйста, исправьте эту проблему. Это станет фатальной ошибкой в предстоящем обновлении.
: CGContextSetFlatness: неверный контекст 0x0. Это серьезная ошибка. Это приложение или используемая им библиотека используют недопустимый контекст и тем самым способствуют общему снижению стабильности и надежности системы. Это уведомление является любезным: пожалуйста, исправьте эту проблему. Это станет фатальной ошибкой в предстоящем обновлении.
: CGContextAddPath: недопустимый контекст 0x0. Это серьезная ошибка. Это приложение или используемая им библиотека используют недопустимый контекст и тем самым способствуют общему снижению стабильности и надежности системы. Это уведомление является любезным: пожалуйста, исправьте эту проблему. Это станет фатальной ошибкой в предстоящем обновлении.
: CGContextDrawPath: недопустимый контекст 0x0. Это серьезная ошибка. Это приложение или используемая им библиотека используют недопустимый контекст и тем самым способствуют общему снижению стабильности и надежности системы. Это уведомление является любезным: пожалуйста, исправьте эту проблему. Это станет фатальной ошибкой в предстоящем обновлении.
: CGContextRestoreGState: неверный контекст 0x0. Это серьезная ошибка. Это приложение или используемая им библиотека используют недопустимый контекст и тем самым способствуют общему снижению стабильности и надежности системы. Это уведомление является любезным: пожалуйста, исправьте эту проблему. Это станет фатальной ошибкой в предстоящем обновлении.
: CGContextGetBlendMode: неверный контекст 0x0. Это серьезная ошибка. Это приложение или используемая им библиотека используют недопустимый контекст и тем самым способствуют общему снижению стабильности и надежности системы. Это уведомление является любезным: пожалуйста, исправьте эту проблему. Это станет фатальной ошибкой в предстоящем обновлении.
Эти ошибки могут возникать при представлении пользовательского представления или одного из его унаследованных классов. В этот момент они появляются несколько раз, пока клавиатура не предоставит никакого ввода. События касания все еще регистрируются, но система замедляется, и в конечном итоге может привести к ошибкам нераспределенного объекта.
РЕДАКТИРОВАТЬ # 1: У меня есть доступ к импортируемой структуре, но я не вижу ничего странного в классах, которые вызывают проблему.
РЕДАКТИРОВАТЬ # 2: Я только что получил письмо, что iOS 7.1 был выпущен для разработчиков. Мне любопытно посмотреть, пройдет ли это, или станет хуже, или может быть решена.
Ответы:
Другие попросят вас опубликовать код для доступа к основному графическому контексту, но я сомневаюсь, что это проблема. Эти недействительные сообщения об ошибках контекста 0x0 являются распространенными и их легко воспроизвести в iOS 7. Фактически, я могу воспроизвести ошибку, используя раскадровку с нулевым кодом. Я перетаскиваю UITextField на холст в IB, запускаю приложение и дважды нажимаю внутри текстового поля.
Во многих ситуациях мне трудно воспринимать недействительные контекстные сообщения об ошибках 0x0 всерьез. Я не знаю, заслуживает ли ваша ситуация большего беспокойства (я согласен с Робом Нейпером в том, что это стоит изучить, особенно если вы явно используете графический контекст).
В моих собственных проектах я надеюсь, что многие из этих ошибок волшебным образом исчезнут когда-нибудь (но этот день не пришел с 7.0.3).
Обновление: после установки Xcode 5.1 и нацеливания на iOS 7.1, я больше не могу воспроизвести ошибку, дважды нажав внутри пустого текстового поля.
источник
Если вам интересно , какой код вызывает эти журналы, вы можете добавить символическую точку останова на
CGPostError
.источник
Ошибки такого рода исторически являются результатом вызова функций Core Graphics, когда они находятся вне контекста, который устанавливается внутри
drawRect
или между вызовами, подобнымиUIGraphicsBeginImageContext
иUIGraphicsEndImageContext
(или другими функциями UIKit, такими как те, которые начинают и заканчивают контекст).Сказав, что, тем не менее, bilobatum является правильным, что эта конкретная последовательность ошибок может быть результатом той ошибки iOS 7, на которую он ссылается в своем ответе. Если вы не видите этих ошибок в ваших мишенях для iOS6 или если после быстрого сканирования этой частной платформы вы не обнаружили никаких подозрительных вызовов Core Graphics, возможно, это просто ошибка iOS 7. Хороший улов, билобатум!
источник
убедитесь, что size.width или size.height не 0,
Вы можете добавить точку останова символа в CGPostError для проверки
источник
У меня была эта проблема с простым UITextField (клавиатура не отображается и много разных недопустимых сообщений об ошибках контекста на консоли). Я просто нахожу обходной путь, глядя на другую проблему на SO: не удается найти исполняемый файл для CFBundle CertUIFramework.axbundle
Просто сделать:
Проблемы больше не должно быть
источник
В моем случае у меня есть эти ошибки в этом коде:
после некоторых мыслей и испытаний я обнаружил проблему - это был этот вызов:
как я обнаружил - в моем коде этот вызов не нужен, поскольку заполнение будет выполняться другим способом - поэтому я просто удаляю его.
источник
У меня была такая же проблема, и я забыл импортировать QuartzCore / QuartzCore.h, это решило мою проблему с этими ошибками.
источник
Прямой ответ: проблема в том, что вы использовали основные графические элементы, такие как CGContext и т. Д., Помимо
- (void)drawRect:(CGRect)rect
этого метода.Теперь, пожалуйста, перенесите ваш код в этот метод. И он перестанет давать вам предупреждения / ошибки.
источник
Я получил эту ошибку, потому что я использовал объект UIColor в качестве атрибута в словаре NSAttributedString, который использовался в объекте CATextLayer. Я изменил словарь для хранения CGColorRef, и ошибка исчезла.
источник
У меня были случаи , когда контекст , возвращаемые
UIGraphicsGetCurrentContext()
этоNULL
, и если вы пытаетесь использовать его для чего это появляется сообщение. Это обязанность представления выдвигать контекст, используяUIGraphicsPushContext
до вызоваdrawRect:
, если вы звонитеdrawRect:
напрямую, а[view setNeedsDisplay]
не рискуете, что контекст еще не установлен. Я догадываюсь, что до iOS 7 контекст был выдвинут для просмотраinit
, а теперь в iOS 7 контекст не выдвигается до тех пор,drawRect:
пока не будет вызван первый раз . Я подозреваю, что некоторый код UIKit вызываетсяdrawRect:
напрямую, и именно поэтому существуют проблемы с некоторым кодом, даже когда не выполняется никакого пользовательского рисования.Решения (если делать нестандартный рисунок):
drawRect:
напрямую, не используйте[view setNeedsDisplay]
или, если вам нужно немедленное использование рисунка[view.layer draw]
drawRect:
получаете контекст, но не используйте его вне тела оператора ifif (context) {<do drawing here>}
источник
Отключение автоматического размещения в затронутом виде приводит к тому, что эта ошибка исчезает в некоторых случаях, когда вы размещаете и перемещаете элементы пользовательского интерфейса (особенно пользовательские, которые отображаются программно) в представлении. Я использовал JVFloatLabeledTextField, когда обнаружил этот симптом.
источник
В некоторых случаях вам может понадобиться включить строку
#import <QuartzCore/QuartzCore.h>
.источник
Я получил эту ошибку в методе drawInContext (..) моей пользовательской реализации CALayer. UIBezierPath пытается использовать UIGraphicsGetCurrentContext (), который по умолчанию равен nil в пользовательском слое. Документация онлайн объясняет это очень ясно -
Вот код, который наконец-то работал с моими комментариями (код Swift, но решение остается тем же, независимо от того)
источник
В моем случае у меня было это предупреждение при создании достоверного изображения со вставками. Проблема заключалась в том, что я не оставлял как минимум 1 пиксель в области «без крышки».
источник
Я создавал UIImage из контекста, используя следующий код:
Таким образом я получил ошибку.
Поэтому я удалил содержимое производных данных, перезапустил мой XCode. И это сработало.
источник
У меня та же проблема. В моем проекте я попытался создать textField и добавить его в мой PDF-файл. Старый код:
После решения этой проблемы код изменился:
Я обнаружил, что решение на UIColor SetFill не работает . И спасибо помощнику.
источник
Я получил ошибку с кодом
и после удаления кода
Мир замолчал
источник
Для меня ответ состоял в том, что я излишне выпускал графический контекст в
drawRect:
. Создание символической точки останова на CGPostError указало мне на виновника.источник
Получил эту ошибку, как я установил
Без реализации какой-либо из делегатов подпрограмм. Удаление этой строки решило проблему для меня
источник
У меня была эта проблема в UITextField, когда я удерживал касание над пустым полем только с текстом-заполнителем. Я использовал следующий обходной путь для устранения пустых полей:
источник
Для меня я получил эту ошибку, потому что я выпускал CGContextRef, как показано ниже:
Удаление релиза решило проблему
источник
Я получил его, когда набрал неверное имя в методе activityImage в подклассе UIActivity
Печатание правильного изображения решило это для меня.
источник
Удалить приложение из симулятора и запустить снова
источник
Как и другие, которые прокомментировали здесь, я получал это предупреждение, когда выполнял одно из следующих действий:
В пустом текстовом поле: двойное касание, прикосновение и удержание, долгое нажатие.
Кажется, это влияет только на iOS 7.0.3
Я обнаружил обходной путь, предупреждение не будет срабатывать, если ваш картон не равен NULL.
Поэтому я сделал следующее в textFieldDidBeginEditing:
Я проверил это в симуляторе для iOS 7.0.3 на iphone 4s, 5 и 5s и больше не получал предупреждение. Я также проверил это в симуляторе для iOS 8 на iphone 6 и 6 плюс, но я не верю, что iOS 8 затронута.
Прошло два дня разочарования, прежде чем открывать для себя эту работу, поэтому я очень надеюсь, что мой ответ поможет тем из вас, у кого возникла та же проблема.
источник
Если ошибка возникает, когда вы используете UIBezierPath и устанавливаете цвет для обводки или заливки, поместите заданный цветовой код в функцию drawRect, а не в другие места.
источник
Это хакерство, но у меня это сработало.
Я установил
UIImageView
вUITableViewCell
'ы'init
, дать ему размер и ограничения.Затем, на мой взгляд, контроллер
cellForRowAtIndexPath
я делаю это:И это позволяет избежать ошибки, а затем в функции я устанавливаю фактическое изображение для этого
UIImageView
. Код выше является хорошим значением по умолчаниюисточник