2013-10-05 6 views
0

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

например : CGContextSetStrokeColorWithColor: недопустимый контекст 0x0. Это серьезная ошибка. Это приложение или используемая им библиотека использует недопустимый контекст и тем самым способствует общему ухудшению стабильности и надежности системы. Это уведомление является любезностью: устраните эту проблему. Это станет фатальной ошибкой в ​​предстоящем обновлении.

только код рисования у меня есть выглядит следующим образом

, что случилось с этим кодом

- (void)drawRect:(CGRect)rect 
{ 
// Drawing code 

CGContextRef context = UIGraphicsGetCurrentContext(); //context 
CGContextBeginPath (context); 
CGContextSetLineWidth(context,3); 
CGPoint center = CGPointMake(rect.size.width/2, rect.size.height/2);//get the view centre 

//get the polygon points 

CGContextMoveToPoint(context, center.x-70,rect.size.height - 140); 
CGContextAddLineToPoint(context, center.x + 130, rect.size.height - 140); 
CGContextAddLineToPoint(context, center.x - 70, 100); 
CGContextAddLineToPoint(context, center.x- 70, rect.size.height - 140); 
CGContextAddLineToPoint(context, center.x - 50, rect.size.height -140); 
CGContextAddLineToPoint(context, center.x - 50, rect.size.height - 160); 
CGContextAddLineToPoint(context, center.x - 70, rect.size.height - 160); 


CGContextClosePath(context);//close the path 
//[[UIColor clearColor] setFill];//set the colour for fill 
[[UIColor blackColor] setStroke];//set the line color 
CGContextDrawPath (context, kCGPathStroke);//draw 

} 

ответ

1

Ты один вызов метода drawRect:? Вы не должны этого делать, вы должны позвонить setNeedsDisplay, и приложение будет звонить в drawRect: в соответствующее время.

При вызове метода drawRect: себя там не будет CGContext толкнул в стек контекста, так что UIGraphicsGetCurrentContext() вернется nil, и вы получите сообщение об ошибке, что вы видите.

+0

У меня есть эта выпрямленная выпрямительная инструкция в классе сама по себе - я тогда в моей дощечке есть uiscrollview, к которой я добавил uiview. - Затем я изменил класс этого uiview на имя класса, которое содержит оператор drawrect - все это сделано - я сам не вызываю drawrect или вызовы set set отображаются в любом месте. это, похоже, сработало для меня pre ios 7, так что может быть неправильно на этот раз? – superllanboy

+0

Проблема в том, что 'UIGraphicsGetCurrentContext()' возвращает нуль. Я не думаю, что есть еще что-то, что вы назвали 'UIGraphicsPopContext' без соответствующего нажатия? Или, возможно, 'CGContextRestoreGState' без соответствующего сохранения (хотя я думаю, что это вызывает исключение сразу). –

+0

спасибо james - я уверен, что вы правы, что контекст равен нулю, но я не уверен, как решить эту проблему. код работает просто отлично, без ошибок, если скомпилирован в xcode 4.3, но сбой при компиляции в xcode 5 с ios7. как я могу создать графический контекст. я заметил, что если я поместил UIGraphicsBeginImageContext (self.view.bounds.size), в моем представлении была загружена инструкция моего главного контроллера представления, проблема уходит, но является ли это правильным решением этой проблемы или нет? - надеюсь, вы можете посоветовать. – superllanboy

Смежные вопросы