Eu li o máximo de resultados de pesquisa que pude encontrar sobre esse problema, infelizmente, cada um parece se concentrar em uma chamada de função específica.
Meu problema é que eu recebo o mesmo erro de várias funções, que eu acho que estão sendo chamadas de volta a partir das funções que eu uso.
Para piorar a situação, o código real está dentro de uma estrutura privada personalizada que está sendo importada em outro projeto e, como tal, a depuração não é tão simples?
Alguém pode me indicar a direção certa? Sinto que estou chamando certos métodos incorretamente ou com um contexto ruim, mas a saída do xcode não é muito útil neste momento.
: CGContextSetFillColorWithColor: contexto inválido 0x0. Isto é um erro sério. Esse aplicativo, ou uma biblioteca que ele usa, está usando um contexto inválido e, assim, contribui para uma degradação geral da estabilidade e confiabilidade do sistema. Este aviso é uma cortesia: corrija esse problema. Isso se tornará um erro fatal em uma atualização futura.
: CGContextSetStrokeColorWithColor: contexto inválido 0x0. Isto é um erro sério. Esse aplicativo, ou uma biblioteca que ele usa, está usando um contexto inválido e, assim, contribui para uma degradação geral da estabilidade e confiabilidade do sistema. Este aviso é uma cortesia: corrija esse problema. Isso se tornará um erro fatal em uma atualização futura.
CGContextSaveGState: contexto inválido 0x0. Isto é um erro sério. Esse aplicativo, ou uma biblioteca que ele usa, está usando um contexto inválido e, assim, contribui para uma degradação geral da estabilidade e confiabilidade do sistema. Este aviso é uma cortesia: corrija esse problema. Isso se tornará um erro fatal em uma atualização futura.
: CGContextSetFlatness: contexto inválido 0x0. Isto é um erro sério. Esse aplicativo, ou uma biblioteca que ele usa, está usando um contexto inválido e, assim, contribui para uma degradação geral da estabilidade e confiabilidade do sistema. Este aviso é uma cortesia: corrija esse problema. Isso se tornará um erro fatal em uma atualização futura.
: CGContextAddPath: contexto inválido 0x0. Isto é um erro sério. Esse aplicativo, ou uma biblioteca que ele usa, está usando um contexto inválido e, assim, contribui para uma degradação geral da estabilidade e confiabilidade do sistema. Este aviso é uma cortesia: corrija esse problema. Isso se tornará um erro fatal em uma atualização futura.
: CGContextDrawPath: contexto inválido 0x0. Isto é um erro sério. Esse aplicativo, ou uma biblioteca que ele usa, está usando um contexto inválido e, assim, contribui para uma degradação geral da estabilidade e confiabilidade do sistema. Este aviso é uma cortesia: corrija esse problema. Isso se tornará um erro fatal em uma atualização futura.
: CGContextRestoreGState: contexto inválido 0x0. Isto é um erro sério. Esse aplicativo, ou uma biblioteca que ele usa, está usando um contexto inválido e, assim, contribui para uma degradação geral da estabilidade e confiabilidade do sistema. Este aviso é uma cortesia: corrija esse problema. Isso se tornará um erro fatal em uma atualização futura.
: CGContextGetBlendMode: contexto inválido 0x0. Isto é um erro sério. Esse aplicativo, ou uma biblioteca que ele usa, está usando um contexto inválido e, assim, contribui para uma degradação geral da estabilidade e confiabilidade do sistema. Este aviso é uma cortesia: corrija esse problema. Isso se tornará um erro fatal em uma atualização futura.
Esses erros podem ocorrer quando uma exibição personalizada é apresentada ou uma de suas classes herdadas. Nesse momento, eles aparecem várias vezes, até o teclado não fornecer nenhuma entrada. Os eventos de toque ainda são registrados, mas o sistema fica mais lento e, eventualmente, pode levar a erros de objetos não alocados.
EDIÇÃO # 1: Eu tenho acesso à estrutura sendo importada, mas não vejo nada de estranho nas classes que causam o problema.
EDIÇÃO # 2: Acabei de receber um e-mail informando que o iOS 7.1 foi lançado para desenvolvedores. Estou curioso para ver se isso desaparece ou piora ou pode ser resolvido.
Respostas:
Outros pedirão que você publique o código onde você acessa um contexto gráfico principal, mas duvido que esse seja o problema. Essas mensagens de erro de contexto 0x0 inválidas são comuns e fáceis de reproduzir no iOS 7. De fato, eu posso reproduzir o erro usando o storyboard com código zero. Arrasto um UITextField para a tela no IB, execute o aplicativo e toque duas vezes dentro do campo de texto.
Em muitas situações, é difícil para mim levar a sério as mensagens de erro de contexto 0x0 inválidas. Não sei se sua situação merece maior preocupação (concordo com Rob Napier que vale a pena investigar, especialmente se você estiver usando explicitamente um contexto gráfico).
Em meus próprios projetos, espero que muitos desses erros desapareçam magicamente algum dia (mas esse dia não veio com 7.0.3).
Atualização: depois de instalar o Xcode 5.1 e direcionar o iOS 7.1, não consigo mais reproduzir o erro tocando duas vezes dentro de um campo de texto vazio.
fonte
Se você está curioso para saber qual código está causando esses logs, pode adicionar um ponto de interrupção simbólico
CGPostError
.fonte
Historicamente, esses tipos de erros são o resultado da chamada de funções dos Gráficos Principais quando não estão em um contexto estabelecido dentro
drawRect
ou entre chamadas comoUIGraphicsBeginImageContext
eUIGraphicsEndImageContext
(ou outras funções do UIKit como aquela que inicia e termina um contexto).Dito isto, o bilobatum está certo de que essa sequência específica de erros pode ser o resultado do bug do iOS 7 que ele menciona em sua resposta. Se você não estiver vendo esses erros nos seus destinos iOS6, ou se, após uma rápida verificação dessa estrutura privada, não encontrar nenhuma chamada de Core Graphics suspeita, pode ser apenas esse bug do iOS 7. Boa captura, bilobatum!
fonte
verifique se size.width ou size.height não é 0,
você pode adicionar o ponto de interrupção do símbolo ao CGPostError para verificar
fonte
Eu tive esse problema com um UITextField simples (o teclado não aparece e muitas mensagens de erro de contexto inválidas diferentes no console). Acabei de encontrar uma solução alternativa, procurando outro problema no SO: Não é possível encontrar o executável para CFBundle CertUIFramework.axbundle
Apenas faça:
O problema não deveria estar mais lá
fonte
No meu caso, eu tenho esses erros neste código:
depois de algumas reflexões e testes, detecto o problema - foi esta chamada:
como eu detecto - no meu código essa chamada não é necessária, porque o preenchimento será feito de outra maneira - então eu simplesmente o removo.
fonte
Eu tive esse mesmo problema e esqueci de importar o QuartzCore / QuartzCore.h. Isso resolveu meu problema com esses erros.
fonte
Resposta direta: O problema é que você usou elementos gráficos do núcleo, como CGContext etc., além
- (void)drawRect:(CGRect)rect
deste método.Agora, mova seu código para esse método. E ele irá emitir avisos / erros.
fonte
Eu estava recebendo esse erro porque estava usando um objeto UIColor como um atributo em um dicionário NSAttributedString que estava sendo usado em um objeto CATextLayer. Mudei o dicionário para conter um CGColorRef e o erro desapareceu.
fonte
Eu tive casos em que o contexto retornado
UIGraphicsGetCurrentContext()
éNULL
e, se você tentar usá-lo para qualquer coisa, essa mensagem será exibida. É de responsabilidade da visualização empurrar um contexto usandoUIGraphicsPushContext
antes da chamadadrawRect:
, se você ligardrawRect:
diretamente em vez de[view setNeedsDisplay]
arriscar que o contexto ainda não esteja definido. Meu palpite é que, antes do iOS 7, o contexto era empurrado para a visualizaçãoinit
, e agora no iOS 7 o contexto não é empurrado até a primeira vezdrawRect:
que será chamado. Eu suspeito que algum código do UIKit esteja chamandodrawRect:
diretamente e é por isso que há problemas com algum código, mesmo quando nenhum desenho personalizado está sendo feito.Soluções (se estiver fazendo desenho personalizado):
drawRect:
diretamente, use[view setNeedsDisplay]
ou se precisar de desenho imediato[view.layer draw]
drawRect:
obter o contexto, mas não o use fora do corpo desta instrução ifif (context) {<do drawing here>}
fonte
Desativar o layout automático na exibição afetada faz com que esse erro desapareça em alguns casos em que você coloca e move elementos da interface do usuário (especialmente os personalizados que são desenhados programaticamente) em uma exibição. Eu estava usando JVFloatLabeledTextField quando descobri esse sintoma.
fonte
Em alguns casos, pode ser necessário incluir a linha
#import <QuartzCore/QuartzCore.h>
.fonte
Eu recebi esse erro no método drawInContext (..) da minha implementação personalizada do CALayer. UIBezierPath tenta usar o UIGraphicsGetCurrentContext () que é nulo por padrão em uma camada personalizada. A documentação online explica isso muito claramente -
Aqui está o código que finalmente funcionou com meus comentários embutidos (código Swift, mas a solução é a mesma, independentemente)
fonte
No meu caso, eu estava recebendo esse aviso ao criar uma imagem resible com inserções de cap. O problema era que eu não estava deixando pelo menos 1 pixel na área "sem limite".
fonte
Eu estava criando UIImage a partir do contexto usando o código abaixo:
Assim, eu estava recebendo o erro.
Então eu removi o conteúdo dos Dados Derivados, reiniciei meu XCode. E funcionou.
fonte
Eu tenho o mesmo problema. No meu projeto, tentei criar um campo de texto e adicioná-lo ao meu arquivo pdf. Código antigo:
Depois de resolver esse problema, o código mudou:
Eu encontrei a solução no UIColor SetFill não funciona . E obrigado o ajudante.
fonte
Eu recebi o erro com o código
e depois removido o código
O mundo ficou em silêncio
fonte
Para mim, a resposta foi que eu estava liberando desnecessariamente o contexto gráfico
drawRect:
. Jogar um ponto de interrupção simbólico no CGPostError me indicou o culpado.fonte
Recebi este erro como eu havia definido
Sem implementar nenhuma das rotinas de delegado. A remoção dessa linha resolveu o problema para mim
fonte
Eu tive esse problema em um UITextField quando toquei em um campo em branco com apenas o texto do espaço reservado. Usei a seguinte solução alternativa para eliminar os campos em branco:
fonte
Para mim, estava recebendo esse erro porque estava liberando o CGContextRef, como mostrado abaixo:
A remoção da versão resolveu o problema
fonte
Obtive quando digitei incorretamente o nome da imagem no método activityImage na subclasse UIActivity
Digitar a imagem certa resolveu isso para mim.
fonte
Desinstale o aplicativo do simulador e execute novamente
fonte
Como outros que comentaram aqui, eu recebia esse aviso quando fazia um dos seguintes:
Em um campo de texto em branco: toque duas vezes, toque e segure, toque longo e único.
Isso parece afetar apenas o iOS 7.0.3
Descobri uma solução alternativa, o aviso não será acionado se a área de transferência não for NULL.
Então, fiz o seguinte em textFieldDidBeginEditing:
Testei isso no simulador para iOS 7.0.3 no iphone 4s, 5 e 5s e não recebo mais o aviso. Também testei isso no simulador para iOS 8 no iphone 6 e 6 plus, mas não acredito que o iOS 8 seja afetado.
Passamos dois dias de frustração antes de descobrir esse trabalho. Espero que minha resposta ajude aqueles que estão tendo o mesmo problema.
fonte
Se o erro ocorrer quando você estiver usando o UIBezierPath e definir cores para traçado ou preenchimento, coloque o código de cores definido na função drawRect em vez de em outros locais.
fonte
Isso é hacky, mas funcionou para mim.
Eu configurei o
UIImageView
noUITableViewCell
'sinit
, dou um tamanho e restrições.Então, na minha view controller,
cellForRowAtIndexPath
faço o seguinte:E isso evita o erro, abaixo disso, na função, defino a imagem real para isso
UIImageView
. O código acima é um bom padrãofonte