недопустимый контекст 0х0 под iOS 7.0 и деградации системы

Я'вэ-читать как можно больше результатов поиска, которые я мог найти на этой ужасной проблемы, к сожалению, каждый, кажется, чтобы сосредоточиться на конкретном вызове функции.

Моя проблема заключается в том, что я получаю ту же ошибку с нескольких функций, которые я предполагаю, были перезвонили из функций, которые я использую.

Чтобы сделать дела хуже, фактический код в пользовательских собственный Framework, который импортируется в другой проект, и как таковой, отладке это'т так просто?

Может кто-нибудь мне точку в правильном направлении? У меня есть чувство, что я'м вызова определенных методов ошибочно или плохом контексте, но выход из Xcode-это не очень полезно в этот момент.

<ошибка>: CGContextSetFillColorWithColor: недопустимый контекст с 0x0. Это серьезная ошибка. Этого приложения, или библиотеки он использует, использует недопустимый контекст и тем самым способствует общей деградации системы стабильность и надежность. Данное уведомление является вежливости: пожалуйста чтобы исправить эту проблему. Она станет фатальной ошибки в следующем обновлении.

<ошибка>: CGContextSetStrokeColorWithColor: недопустимый контекст с 0x0. Это > есть серьезная ошибка. Этого приложения, или библиотеки он использует, использует недопустимый контекст и тем самым способствует общему деградация стабильности и надежности системы. Данное уведомление является вежливости: пожалуйста, исправить эту проблему. Это станет фатальной ошибкой в В предстоящем обновлении.

CGContextSaveGState: недопустимый контекст с 0x0. Это серьезная ошибка. У этого приложения, или библиотеки он использует, использует недопустимый контекст > и тем самым способствует общей деградации системы стабильность и надежность. Данное уведомление является вежливости: пожалуйста, исправить это проблема. Она станет фатальной ошибки в следующем обновлении.

<ошибка>: CGContextSetFlatness: недопустимый контекст с 0x0. Это серьезный ошибка. Этого приложения, или библиотеки он использует, использует недопустимый В контексте, и тем самым способствует общей деградации стабильность и надежность системы. Данное уведомление является вежливости: пожалуйста чтобы исправить эту проблему. Она станет фатальной ошибки в следующем обновлении.

<ошибка>: CGContextAddPath: недопустимый контекст с 0x0. Это серьезный ошибка. Этого приложения, или библиотеки он использует, использует недопустимый В контексте, и тем самым способствует общей деградации стабильность и надежность системы. Данное уведомление является вежливости: пожалуйста чтобы исправить эту проблему. Она станет фатальной ошибки в следующем обновлении.

<ошибка>: CGContextDrawPath: недопустимый контекст с 0x0. Это серьезный ошибка. Этого приложения, или библиотеки он использует, использует недопустимый В контексте, и тем самым способствует общей деградации стабильность и надежность системы. Данное уведомление является вежливости: пожалуйста чтобы исправить эту проблему. Она станет фатальной ошибки в следующем обновлении.

<ошибка>: CGContextRestoreGState: недопустимый контекст с 0x0. Это серьезные ошибки. Этого приложения, или библиотеки он использует, использует недопустимый контекст и тем самым способствует общей деградации системы стабильность и надежность. Данное уведомление является вежливости: пожалуйста чтобы исправить эту проблему. Она станет фатальной ошибки в следующем обновлении.

<ошибка>: CGContextGetBlendMode: недопустимый контекст с 0x0. Это серьезный ошибка. Этого приложения, или библиотеки он использует, использует недопустимый В контексте, и тем самым способствует общей деградации стабильность и надежность системы. Данное уведомление является вежливости: пожалуйста чтобы исправить эту проблему. Она станет фатальной ошибки в следующем обновлении.

Эти ошибки могут произойти, когда представил нестандартный вид, или один из его унаследованных классов. В какой момент они нерестятся несколько раз, до тех пор, пока клавиатура выиграл'т предоставить любой вход. Сенсорные события по-прежнему регистрируются, но система тормозит, и в конечном итоге может привести к ошибкам объекта незанятое.

Редактировать #1: у меня есть доступ к база импортируется, но я не вижу ничего странного в классы, которые вызывают проблему.

Редактировать #2: я только что получил письмо, что iOS 7.1 была выпущена для разработчиков. Я'м любопытно увидеть, если это исчезнет, или станет хуже, или может быть решена.

Комментарии к вопросу (5)

Если вы'вновь любопытно, что код вызывает эти журналы, вы можете добавить символическая breakpoint на CGPostError.

Комментарии (9)
Решение

Другие будут просить вас, чтобы разместить код, где вы получаете доступ к основной графический контекст, но я сомневаюсь, что's вопрос. Эти недопустимый контекст сообщения об ошибках 0х0 являются общими и легко воспроизвести в iOS 7. На самом деле, я могу воспроизвести ошибку, используя раскадровку с нулевой код. Я таскаю с UITextField на холсте в МБ, запустите приложение, дважды нажмите внутри текстового поля.

Во многих ситуациях, это'ы трудно для меня, чтобы взять недопустимый контекст сообщения об ошибках 0х0 серьезно. Я не'т знать, если ваша ситуация требует большей заботы (я согласен с Роб Нейпир что это'ы стоят вашего внимания, особенно если вы явно используя графический контекст).

В своих проектах, я'м надеясь, что многие из этих ошибок волшебным образом исчезнуть (но в тот день не пришел с 7.0.3).

Обновление: после установки в Xcode 5.1 и для платформы iOS 7.1, я больше не могу воспроизвести ошибку дважды нажав в пустое текстовое поле.

Комментарии (7)

Такого рода ошибки являются исторически результат вызова основных графических функций, когда не в контексте того, что установлено в drawRect или между звонками, как UIGraphicsBeginImageContext и UIGraphicsEndImageContext (или другой базе UIKit функции, как то, что начало и конец контекста).

Сказав, что, хотя, bilobatum правильно, что эта конкретная последовательность ошибок может быть результатом что iOS 7 ошибку, которую он ссылается в своем ответе. Если не видеть эти ошибки в ваших целей в iOS6, или если после быстрого сканирования это частная структура, Дон'т найти любые подозрительные основных графических вызовов, это может быть просто это iOS 7 ошибка. Хороший улов, bilobatum!

Комментарии (2)
UIGraphicsBeginImageContext( size );
CGContextRef context = UIGraphicsGetCurrentContext();

убедитесь, что размер.ширина или размер.высота не 0,

вы можете добавить символ останова в CGPostError для проверки

Комментарии (3)

Я имел эту проблему с помощью простой объект UITextField (клавиатура не появляется и множество другой недопустимый контекст сообщения об ошибках на консоли). Я просто найти обходной путь, глядя на еще одну проблему так: https://stackoverflow.com/questions/18888059/cannot-find-executable-for-cfbundle-certuiframework-axbundle

Просто сделай:

нажать на имитатор iOS > сбросить контент и настройки... и запустите снова.

Проблема должна'т быть там больше

Комментарии (0)

В моем случае я'ве получил эти ошибки в этом коде:

CAShapeLayer *shapeLayer = [CAShapeLayer layer];
UIBezierPath *path;

path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(0, 0)];
[path addLineToPoint:CGPointMake(size*2, 0)];
[path addLineToPoint:CGPointMake(size, size*2)];
[path closePath];
[path fill];

shapeLayer.path = path.CGPath;
shapeLayer.strokeColor = [[UIColor blackColor] CGColor];
shapeLayer.fillColor = color;
shapeLayer.lineWidth = width;

[self addSublayer:shapeLayer];

после некоторых размышлений и тестов я обнаружил проблему - это был такой призыв:

[path fill];

как я заметил - в моем коде это называть не нужно, потому что заправки будут делать другие - я это так просто удалите его.

Комментарии (1)

Правильный Ответ : Проблема в том, что вы воспользовались основные графические элементы, такие как CGContext и т. д. В - в (Void)drawRect:(CGRect на)вильный этот метод.

Теперь необходимо переместить ваш код в этот метод. И это строп давать вам предупреждения/ошибки.

Комментарии (0)

У меня был этот же вопрос, и я забыл импортировать QuartzCore/QuartzCore.ч, это решить мою проблему с этими ошибками.

    #import 
Комментарии (1)

Я получаю эту ошибку, потому что я был с помощью UIColor объект в качестве атрибута в NSAttributedString словарь, который используется в объекте CATextLayer. Я изменил словарь, чтобы провести CGColorRef и ошибка ушла.

[wordAttributes setObject:(id)[UIColor whiteColor].CGColor forKey:(NSString*)kCTForegroundColorAttributeName];
Комментарии (0)

Как выключить режим в пораженном вид вызывает эту ошибку, чтобы уйти в некоторых случаях, когда вы'повторно размещение и перемещение элементов пользовательского интерфейса (особенно на заказ, которые рисуются программно) в виде. Я использовал JVFloatLabeledTextField, когда я обнаружил этот симптом.

Комментарии (0)

Я получил эту ошибку в drawInContext(..) метод пользовательского реализации CALayer. UIBezierPath пытается использовать UIGraphicsGetCurrentContext (), которая равна нулю по умолчанию в пользовательском слое. В документации объясняет это очень четко -

если вы не используете объект UIView, чтобы сделать ваш рисунок, тем не менее, вы должны толкать допустимый контекст в стек вручную с помощью функции UIGraphicsPushContext.

Здесь'ы код, который, наконец, работал с моими комментариями рядный (SWIFT-код, но решение остается неизменным независимо от)

override func drawInContext(ctx: CGContext!) {  
    var path = UIBezierPath()

    // 1. Make sure you push the CGContext that was first passed into you.
    UIGraphicsPushContext(ctx)
    path.moveToPoint(CGPoint(x: 0, y: 0))
    path.addLineToPoint(CGPoint(x: 150, y: 150))
    var lineColor = UIColor.blueColor()
    lineColor.setStroke()
    path.lineWidth = 2
    path.stroke(
    // 2. Pop the context after you are done.
    UIGraphicsPopContext()
}
Комментарии (0)

В моем случае у меня было такое предупреждение при создании изображения resible с вставками кепки. Проблема в том, что я не'т оставив как минимум 1 пиксель в "без ограничений" в районе.

    UIImage *image = [UIImage imageNamed:@"name"];
    UIEdgeInsets edgeInsets = UIEdgeInsetsMake(20, 10, 20, 10);  //Problem here if the width is 20 or the height is 40
    image = [image resizableImageWithCapInsets:edgeInsets];
Комментарии (1)

У меня были случаи, когда контекст вернулись из UIGraphicsGetCurrentContext () нулевой, и если вы пытаетесь использовать ее для чего это сообщение появляется. Это мнение'ы ответственность, чтобы подтолкнуть контексте, используя UIGraphicsPushContext перед вызовом drawRect: если вы называете drawRect: вместо [вид setNeedsDisplay] вы рискуете контекст не установлен еще. Моя догадка заключается в том, что до iOS 7 контекст был выдвинут для представления о инициализации, и теперь на iOS 7 контексте это'т толкнул, пока drawRect в первый раз: это собирается быть вызванным. Я подозреваю, что некоторые код программирования с использованием UIKit зовет drawRect: напрямую, и именно поэтому есть проблемы с некоторыми код, даже если нет отрисовки делается.

Решения (если делаете на заказ рисунок):

  1. Дон't вызов drawRect: используйте [вид setNeedsDisplay] или если вам нужна срочная использовать для рисования[просмотр.нарисуйте слой]`
  2. В вашем drawRect:получаем контекст, но Дон&#39;т использовать его вне тела оператора ifесли (контексте) {<сделать чертеж здесь>}`
Комментарии (0)

В некоторых случаях вам может понадобиться, чтобы включить строку #импорт <QuartzCore/QuartzCore.ч>.

Комментарии (0)

Я получил ошибку с кодом

UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:pointA];
[path addLineToPoint:pointB];
[path addLineToPoint:pointC];
[[UIColor colorWithHexString:@"EFEFEF"] set];
[path fill];
[path closePath];

CAShapeLayer *triangle = [CAShapeLayer layer];
triangle.fillColor = [UIColor colorWithHexString:@"EFEFEF"].CGColor;
triangle.path = path.CGPath;

return triangle;

и после того, как сняли код

[[UIColor colorWithHexString:@"EFEFEF"] set];
[path fill];

Мир притих

Комментарии (0)

Я создавал UIImage из контекста, используя ниже код: в <предварительно> UIGraphicsBeginImageContext(размер); Контексте CGContextRef = UIGraphicsGetCurrentContext();

CGContextSetFillColorWithColor(context, color.CGColor);
CGContextFillRect(context, (CGRect){.size = size});

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

</пред>

Таким образом я получаю ошибку.

Так что я снял полученных данных, перезагрузки в Xcode. И это сработало.

Комментарии (2)

У меня такая же проблема. В моем проекте, я стараюсь создать textfield и добавить его в файл PDF. Старый Код:

- (void) drawInContext:(CGContextRef)context {
    //Otherwise we're upside-down
    CGContextSetTextMatrix(context, CGAffineTransformMake(1.0,0.0, 0.0, -1.0, 0.0, 0.0));

    CGContextSetTextDrawingMode(context, kCGTextFill); // This is the default
    [[UIColor blackColor] setFill]; // ***This is the problem ***

    CGFloat x = self.rect.origin.x;
    CGFloat y = self.rect.origin.y + self.font.pointSize;
    [self.text drawAtPoint:CGPointMake(x, y)
            withAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"Arial" size:12]}];
}

После того, как решена эта проблема,код изменен :

old:[[UIColor blackColor] setFill]; 

new:CGContextSetFillColorWithColor(context, [[UIColor blackColor] CGColor]);

Я нашел решение на https://stackoverflow.com/questions/10623545/uicolor-setfill-doesnt-work. И благодаря помощником.

Комментарии (0)

Если ошибка возникает при использовании UIBezierPath и установите цвет обводки или заливки, поставить установить цветовой код в функции drawRect, а не другими местами.

Комментарии (0)

Это суховато, но он работал для меня.

Я создал помощью UIImageView в инструменту UITableViewCellинициализации, дать ему размеры и ограничения.

Тогда на мой взгляд контроллер'cellForRowAtIndexPath ы `` я делаю это:

let img = PFImageView(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
img.setImage(withFile: nil, defaultText: message.senderUsername)
cell.profileImageView?.image = img.image

И, чтобы избежать ошибки, то ниже, что в функции я установил фактические изображения за помощью UIImageView`. Приведенный выше код является хорошим по умолчанию

Комментарии (0)

Я имел эту проблему в поле UITextField, когда я держал связь по пустым полем с просто шаблонный текст. Я использовал следующие решения для устранения пустых полей:

-(void)textFieldDidBeginEditing:(UITextField *)textField{

        textField.text=[@" " stringByAppendingString:textField.text];

        //other stuff here
}

-(BOOL)textFieldShouldReturn:(UITextField *)textField{

         if(textField.text.length>0){
             if([[textField.text substringToIndex:1] isEqualToString:@" "])
                 textField.text=[textField.text substringFromIndex:1];
         }
         //  other stuff here
}
Комментарии (0)