He leído tantos resultados de búsqueda que pude encontrar en este temido problema, desafortunadamente, cada uno parece centrarse en una llamada de función específica.
Mi problema es que obtengo el mismo error de varias funciones, que supongo que se devuelven las funciones que uso.
Para empeorar las cosas, el código real está dentro de un marco privado personalizado que se está importando en otro proyecto y, como tal, la depuración no es tan simple.
¿Alguien puede señalarme en la dirección correcta? Tengo la sensación de que estoy llamando a ciertos métodos incorrectamente o con un contexto incorrecto, pero la salida de xcode no es muy útil en este momento.
: CGContextSetFillColorWithColor: contexto no válido 0x0. Este es un error serio. Esta aplicación, o una biblioteca que usa, está usando un contexto no válido y, por lo tanto, está contribuyendo a una degradación general de la estabilidad y confiabilidad del sistema. Este aviso es una cortesía: solucione este problema. Se convertirá en un error fatal en una próxima actualización.
: CGContextSetStrokeColorWithColor: contexto no válido 0x0. Este es un error serio. Esta aplicación, o una biblioteca que usa, está usando un contexto no válido y, por lo tanto, está contribuyendo a una degradación general de la estabilidad y confiabilidad del sistema. Este aviso es una cortesía: solucione este problema. Se convertirá en un error fatal en una próxima actualización.
CGContextSaveGState: contexto no válido 0x0. Este es un error serio. Esta aplicación, o una biblioteca que usa, está usando un contexto no válido y, por lo tanto, está contribuyendo a una degradación general de la estabilidad y confiabilidad del sistema. Este aviso es una cortesía: solucione este problema. Se convertirá en un error fatal en una próxima actualización.
: CGContextSetFlatness: contexto no válido 0x0. Este es un error serio. Esta aplicación, o una biblioteca que usa, está usando un contexto no válido y, por lo tanto, está contribuyendo a una degradación general de la estabilidad y confiabilidad del sistema. Este aviso es una cortesía: solucione este problema. Se convertirá en un error fatal en una próxima actualización.
: CGContextAddPath: contexto no válido 0x0. Este es un error serio. Esta aplicación, o una biblioteca que utiliza, está utilizando un contexto no válido y, por lo tanto, está contribuyendo a una degradación general de la estabilidad y confiabilidad del sistema. Este aviso es una cortesía: solucione este problema. Se convertirá en un error fatal en una próxima actualización.
: CGContextDrawPath: contexto no válido 0x0. Este es un error serio. Esta aplicación, o una biblioteca que utiliza, está utilizando un contexto no válido y, por lo tanto, está contribuyendo a una degradación general de la estabilidad y confiabilidad del sistema. Este aviso es una cortesía: solucione este problema. Se convertirá en un error fatal en una próxima actualización.
: CGContextRestoreGState: contexto no válido 0x0. Este es un error serio. Esta aplicación, o una biblioteca que utiliza, está utilizando un contexto no válido y, por lo tanto, está contribuyendo a una degradación general de la estabilidad y confiabilidad del sistema. Este aviso es una cortesía: solucione este problema. Se convertirá en un error fatal en una próxima actualización.
: CGContextGetBlendMode: contexto no válido 0x0. Este es un error serio. Esta aplicación, o una biblioteca que utiliza, está utilizando un contexto no válido y, por lo tanto, está contribuyendo a una degradación general de la estabilidad y confiabilidad del sistema. Este aviso es una cortesía: solucione este problema. Se convertirá en un error fatal en una próxima actualización.
Esos errores pueden ocurrir cuando se presenta una vista personalizada o una de sus clases heredadas. En ese punto se generan varias veces, hasta que el teclado no proporcione ninguna entrada. Los eventos táctiles aún se registran, pero el sistema se ralentiza y eventualmente puede conducir a errores de objetos no asignados.
EDITAR # 1: Tengo acceso al marco que se importa, pero no veo nada extraño en las clases que causen el problema.
EDITAR # 2: acabo de recibir un correo electrónico que iOS 7.1 ha sido lanzado para desarrolladores Tengo curiosidad por ver si esto desaparece, si empeora o si se puede resolver.
Respuestas:
Otros le pedirán que publique el código donde accede a un contexto gráfico central, pero dudo que ese sea el problema. Estos mensajes de error 0x0 de contexto no válidos son comunes y fáciles de reproducir en iOS 7. De hecho, puedo reproducir el error usando storyboard con código cero. Arrastro un UITextField sobre el lienzo en IB, ejecuto la aplicación y hago doble clic dentro del campo de texto.
En muchas situaciones, me resulta difícil tomar en serio los mensajes de error 0x0 de contexto no válido. No sé si su situación merece una mayor preocupación (estoy de acuerdo con Rob Napier en que vale la pena investigar, especialmente si está utilizando explícitamente un contexto gráfico).
En mis propios proyectos, espero que muchos de estos errores desaparezcan mágicamente algún día (pero ese día no vino con 7.0.3).
Actualización: después de instalar Xcode 5.1 y apuntar a iOS 7.1, ya no puedo reproducir el error tocando dos veces dentro de un campo de texto vacío.
fuente
Si tiene curiosidad sobre qué código está causando estos registros, puede agregar un punto de interrupción simbólico
CGPostError
.fuente
Este tipo de errores son históricamente el resultado de llamar a funciones de Core Graphics cuando no están dentro de un contexto establecido dentro
drawRect
o entre llamadas comoUIGraphicsBeginImageContext
yUIGraphicsEndImageContext
(u otras funciones UIKit como las que comienzan y terminan un contexto).Dicho esto, sin embargo, bilobatum es correcto que esta secuencia particular de errores puede ser el resultado de ese error de iOS 7 al que hace referencia en su respuesta. Si no ve estos errores en sus objetivos iOS6, o si después de un escaneo rápido de este marco privado no encuentra ninguna llamada sospechosa de Core Graphics, puede ser este error de iOS 7. Buena captura, bilobatum!
fuente
asegúrese de que size.width o size.height no sea 0,
puede agregar un punto de interrupción de símbolo a CGPostError para verificar
fuente
Tuve este problema con un simple UITextField (el teclado no aparece y muchos mensajes de error de contexto no válidos diferentes en la consola). Acabo de encontrar una solución alternativa al buscar otro problema en SO: no se puede encontrar el ejecutable para CFBundle CertUIFramework.axbundle
Solo haz:
El problema ya no debería estar ahí
fuente
En mi caso, tengo estos errores en este código:
después de algunas reflexiones y pruebas, detecto el problema: fue esta llamada:
tal como lo detecto, en mi código esta llamada no es necesaria, porque el llenado se realizará de otra manera, así que simplemente la elimino.
fuente
Tuve este mismo problema y olvidé importar QuartzCore / QuartzCore.h, esto resolvió mi problema con estos errores.
fuente
Respuesta directa : El problema se debe a que ha utilizado elementos gráficos Core como CGContext, etc. en otro
- (void)drawRect:(CGRect)rect
método que no sea este.Ahora amablemente mueva su código a este método. Y se detendrá dándote advertencias / errores.
fuente
Recibí este error porque estaba usando un objeto UIColor como atributo en un diccionario NSAttributedString que se estaba usando en un objeto CATextLayer. Cambié el diccionario para contener un CGColorRef y el error desapareció.
fuente
He tenido casos en los que el contexto regresó
UIGraphicsGetCurrentContext()
esNULL
, y si intentas usarlo para algo, aparece este mensaje. Es responsabilidad de la vista impulsar un contexto utilizandoUIGraphicsPushContext
antes de llamardrawRect:
, si llamadrawRect:
directamente en lugar de[view setNeedsDisplay]
arriesgarse, el contexto aún no se ha configurado. Mi presentimiento es que antes de iOS 7, el contexto fue empujado para la vistainit
, y ahora en iOS 7 el contexto no se empuja hasta que la primera vezdrawRect:
está a punto de ser llamado. Sospecho que algún código UIKit está llamandodrawRect:
directamente y es por eso que hay problemas con algún código incluso cuando no se está haciendo un dibujo personalizado.Soluciones (si está haciendo un dibujo personalizado):
drawRect:
directamente, use[view setNeedsDisplay]
o si necesita un uso inmediato del dibujo[view.layer draw]
drawRect:
obtener el contexto, pero no lo use fuera del cuerpo de esta declaración ifif (context) {<do drawing here>}
fuente
Desactivar la distribución automática en la vista afectada hace que este error desaparezca en algunos casos en los que coloca y mueve elementos de la IU (especialmente los personalizados que se dibujan mediante programación) dentro de una vista. Estaba usando JVFloatLa LabelTextField cuando descubrí este síntoma.
fuente
En algunos casos, es posible que deba incluir la línea
#import <QuartzCore/QuartzCore.h>
.fuente
Recibí este error en el método drawInContext (..) de mi implementación personalizada de CALayer. UIBezierPath intenta usar UIGraphicsGetCurrentContext () que es nulo por defecto en una capa personalizada. La documentación en línea explica esto muy claramente:
Aquí está el código que finalmente funcionó con mis comentarios en línea (código Swift, pero la solución es la misma independientemente)
fuente
En mi caso, tenía esta advertencia al crear una imagen resible con inserciones de tapa. El problema era que no dejaba al menos 1 píxel en el área "sin tapar".
fuente
Estaba creando UIImage desde el contexto usando el siguiente código:
Por lo tanto, recibí el error.
Así que eliminé el contenido de datos derivados y reinicié mi XCode. Y funcionó.
fuente
Tengo el mismo problema. En mi proyecto, he intentado crear un textField y agregarlo a mi archivo pdf. Código antiguo
Después de resolver este problema, el código cambió:
Encontré que la solución en UIColor SetFill no funciona . Y gracias al ayudante.
fuente
Recibí el error con el código
y después de quitar el código
El mundo quedó en silencio
fuente
Para mí, la respuesta fue que estaba liberando innecesariamente el contexto gráfico
drawRect:
. Lanzar un punto de interrupción simbólico en CGPostError me señaló al culpable.fuente
Recibí este error como lo había configurado
Sin implementar ninguna de las rutinas de delegado. Eliminar esa línea me resolvió el problema
fuente
Tuve este problema en un UITextField cuando mantuve el toque sobre un campo en blanco con solo texto de marcador de posición. Utilicé la siguiente solución para eliminar campos en blanco:
fuente
Para mí, recibí este error porque estaba lanzando el CGContextRef como se muestra a continuación:
Eliminar la versión solucionó el problema
fuente
Lo obtuve cuando escribí mal el nombre de la imagen en la actividad Método de imagen en la subclase UIActivity
Escribir la imagen correcta lo resolvió para mí.
fuente
Desinstale la aplicación del simulador y vuelva a ejecutar
fuente
Al igual que otros que han comentado aquí, recibí esta advertencia cuando hice algo de lo siguiente:
En un campo de texto en blanco: toca dos veces, toca y mantén presionado, toca un botón largo.
Esto parece afectar solo a iOS 7.0.3
Descubrí una solución, la advertencia no se activará si su cartón no es NULL.
Entonces hice lo siguiente en textFieldDidBeginEditing:
Probé esto en el simulador para iOS 7.0.3 en el iphone 4s, 5 y 5s y ya no recibo la advertencia. También probé esto en el simulador para iOS 8 en el iPhone 6 y 6 plus, pero no creo que iOS 8 se vea afectado.
Pasé dos días de frustración antes de descubrir esta solución, así que realmente espero que mi respuesta ayude a aquellos de ustedes que tienen el mismo problema.
fuente
Si el error ocurre cuando está usando UIBezierPath y establece el color para el trazo o el relleno, coloque el código de color establecido en la función drawRect en lugar de otros lugares.
fuente
Esto es hacky pero funcionó para mí.
Configuré el
UIImageView
en laUITableViewCell
'sinit
, le doy un tamaño y restricciones.Luego, en mi controlador de vista,
cellForRowAtIndexPath
hago esto:Y eso evita el error, luego debajo de eso en la función configuré la imagen real para eso
UIImageView
. El código anterior es un buen valor predeterminadofuente