J'ai lu autant de résultats de recherche que j'ai pu trouver sur ce problème redouté, malheureusement, chacun semble se concentrer sur un appel de fonction spécifique.
Mon problème est que j'obtiens la même erreur de plusieurs fonctions, qui, je suppose, sont rappelées à partir des fonctions que j'utilise.
Pour aggraver les choses, le code réel se trouve dans un cadre privé personnalisé qui est importé dans un autre projet, et en tant que tel, le débogage n'est pas aussi simple?
Quelqu'un peut-il m'orienter dans la bonne direction? J'ai l'impression d'appeler certaines méthodes à tort ou avec un mauvais contexte, mais la sortie de xcode n'est pas très utile à ce stade.
: CGContextSetFillColorWithColor: contexte non valide 0x0. C'est une erreur sérieuse. Cette application, ou une bibliothèque qu'elle utilise, utilise un contexte non valide et contribue ainsi à une dégradation globale de la stabilité et de la fiabilité du système. Cet avis est une courtoisie: veuillez résoudre ce problème. Cela deviendra une erreur fatale dans une prochaine mise à jour.
: CGContextSetStrokeColorWithColor: contexte non valide 0x0. C'est une erreur sérieuse. Cette application, ou une bibliothèque qu'elle utilise, utilise un contexte non valide et contribue ainsi à une dégradation globale de la stabilité et de la fiabilité du système. Cet avis est une courtoisie: veuillez résoudre ce problème. Cela deviendra une erreur fatale dans une prochaine mise à jour.
CGContextSaveGState: contexte non valide 0x0. C'est une erreur sérieuse. Cette application, ou une bibliothèque qu'elle utilise, utilise un contexte non valide et contribue ainsi à une dégradation globale de la stabilité et de la fiabilité du système. Cet avis est une courtoisie: veuillez résoudre ce problème. Cela deviendra une erreur fatale dans une prochaine mise à jour.
: CGContextSetFlatness: contexte non valide 0x0. C'est une erreur sérieuse. Cette application, ou une bibliothèque qu'elle utilise, utilise un contexte non valide et contribue ainsi à une dégradation globale de la stabilité et de la fiabilité du système. Cet avis est une courtoisie: veuillez résoudre ce problème. Cela deviendra une erreur fatale dans une prochaine mise à jour.
: CGContextAddPath: contexte non valide 0x0. C'est une erreur sérieuse. Cette application, ou une bibliothèque qu'elle utilise, utilise un contexte non valide et contribue ainsi à une dégradation globale de la stabilité et de la fiabilité du système. Cet avis est une courtoisie: veuillez résoudre ce problème. Cela deviendra une erreur fatale dans une prochaine mise à jour.
: CGContextDrawPath: contexte non valide 0x0. C'est une erreur sérieuse. Cette application, ou une bibliothèque qu'elle utilise, utilise un contexte non valide et contribue ainsi à une dégradation globale de la stabilité et de la fiabilité du système. Cet avis est une courtoisie: veuillez résoudre ce problème. Cela deviendra une erreur fatale dans une prochaine mise à jour.
: CGContextRestoreGState: contexte non valide 0x0. C'est une erreur sérieuse. Cette application, ou une bibliothèque qu'elle utilise, utilise un contexte non valide et contribue ainsi à une dégradation globale de la stabilité et de la fiabilité du système. Cet avis est une courtoisie: veuillez résoudre ce problème. Cela deviendra une erreur fatale dans une prochaine mise à jour.
: CGContextGetBlendMode: contexte non valide 0x0. C'est une erreur sérieuse. Cette application, ou une bibliothèque qu'elle utilise, utilise un contexte non valide et contribue ainsi à une dégradation globale de la stabilité et de la fiabilité du système. Cet avis est une courtoisie: veuillez résoudre ce problème. Cela deviendra une erreur fatale dans une prochaine mise à jour.
Ces erreurs peuvent se produire lorsqu'une vue personnalisée est présentée ou l'une de ses classes héritées. À ce moment, ils apparaissent plusieurs fois, jusqu'à ce que le clavier ne fournisse aucune entrée. Les événements tactiles sont toujours enregistrés, mais le système ralentit et peut éventuellement conduire à des erreurs d'objet non allouées.
EDIT # 1: J'ai accès au framework en cours d'importation, mais je ne vois rien de bizarre dans les classes à l'origine du problème.
EDIT # 2: Je viens de recevoir un e-mail annonçant la sortie d'iOS 7.1 pour les développeurs. Je suis curieux de voir si cela disparaît, s'aggrave ou peut être résolu.
Réponses:
D'autres vous demanderont de poster le code où vous accédez à un contexte graphique de base, mais je doute que ce soit le problème. Ces messages d'erreur de contexte non valide 0x0 sont courants et faciles à reproduire dans iOS 7. En fait, je peux reproduire l'erreur en utilisant un storyboard avec zéro code. Je fais glisser un UITextField sur le canevas dans IB, exécute l'application et appuie deux fois à l'intérieur du champ de texte.
Dans de nombreuses situations, il est difficile pour moi de prendre au sérieux les messages d'erreur de contexte non valide 0x0. Je ne sais pas si votre situation mérite une plus grande inquiétude (je suis d'accord avec Rob Napier que cela vaut la peine d'être étudié, surtout si vous utilisez explicitement un contexte graphique).
Dans mes propres projets, j'espère que beaucoup de ces erreurs disparaissent comme par magie un jour (mais ce jour n'est pas venu avec 7.0.3).
Mise à jour: Après avoir installé Xcode 5.1 et ciblé iOS 7.1, je ne peux plus reproduire l'erreur en appuyant deux fois à l'intérieur d'un champ de texte vide.
la source
Si vous êtes curieux de savoir quel code est à l'origine de ces journaux, vous pouvez ajouter un point d' arrêt symbolique
CGPostError
.la source
Ces sortes d'erreurs sont historiquement le résultat de l'appel de fonctions Core Graphics lorsqu'elles ne sont pas dans un contexte qui est établi dans
drawRect
ou entre des appels commeUIGraphicsBeginImageContext
etUIGraphicsEndImageContext
(ou d'autres fonctions UIKit comme celle qui commence et termine un contexte).Cela dit, cependant, bilobatum a raison de dire que cette séquence d'erreurs particulière peut être le résultat du bogue iOS 7 auquel il fait référence dans sa réponse. Si vous ne voyez pas ces erreurs dans vos cibles iOS6, ou si après une analyse rapide de ce cadre privé, vous ne trouvez aucun appel suspect de Core Graphics, il peut s'agir simplement de ce bogue iOS 7. Bonne prise, bilobatum!
la source
assurez-vous que size.width ou size.height n'est pas 0,
vous pouvez ajouter un point d'arrêt de symbole à CGPostError pour vérifier
la source
J'ai eu ce problème avec un simple UITextField (le clavier ne s'affiche pas et de nombreux messages d'erreur de contexte invalides différents sur la console). Je viens de trouver une solution de contournement en recherchant un autre problème sur SO: Impossible de trouver l'exécutable pour CFBundle CertUIFramework.axbundle
Faites juste:
Le problème ne devrait plus être là
la source
Dans mon cas, j'ai ces erreurs dans ce code:
après quelques réflexions et tests je détecte le problème - c'était cet appel:
comme je le détecte - dans mon code cet appel n'est pas nécessaire, car le remplissage se fera par un autre moyen - donc je le supprime simplement.
la source
J'ai eu ce même problème et j'ai oublié d'importer QuartzCore / QuartzCore.h, cela a résolu mon problème avec ces erreurs.
la source
Réponse directe: le problème est que vous avez utilisé des éléments graphiques Core comme CGContext, etc. dans d'autres
- (void)drawRect:(CGRect)rect
méthode cette méthode.Maintenant, veuillez déplacer votre code vers cette méthode. Et il se détendra vous donnant des avertissements / erreurs.
la source
J'obtenais cette erreur car j'utilisais un objet UIColor comme attribut dans un dictionnaire NSAttributedString qui était utilisé dans un objet CATextLayer. J'ai changé le dictionnaire pour contenir un CGColorRef et l'erreur a disparu.
la source
J'ai eu des cas où le contexte de retour de l'
UIGraphicsGetCurrentContext()
estNULL
, et si vous essayez de l' utiliser pour quoi que ce soit ce message apparaît. Il est de la responsabilité de la vue de pousser un contexte en utilisantUIGraphicsPushContext
avant d'appelerdrawRect:
, si vous appelezdrawRect:
directement au lieu de[view setNeedsDisplay]
risquer que le contexte ne soit pas encore défini. Mon intuition est qu'avant iOS 7, le contexte était poussé pour la vueinit
, et maintenant sur iOS 7, le contexte n'est pas poussé jusqu'à ce que la première foisdrawRect:
soit sur le point d'être appelée. Je soupçonne qu'un code UIKit appelledrawRect:
directement et c'est pourquoi il y a des problèmes avec du code même quand aucun dessin personnalisé n'est en cours.Solutions (si vous faites un dessin personnalisé):
drawRect:
directement, utilisez[view setNeedsDisplay]
ou si vous avez besoin d'un dessin immédiat[view.layer draw]
drawRect:
contexte, mais ne l'utilisez pas en dehors du corps de cette instruction ifif (context) {<do drawing here>}
la source
La désactivation de la mise en page automatique dans la vue affectée entraîne la disparition de cette erreur dans certains cas où vous placez et déplacez des éléments d'interface utilisateur (en particulier ceux personnalisés qui sont dessinés par programme) dans une vue. J'utilisais JVFloatLabeledTextField lorsque j'ai découvert ce symptôme.
la source
Dans certains cas, vous devrez peut-être inclure la ligne
#import <QuartzCore/QuartzCore.h>
.la source
J'ai eu cette erreur dans la méthode drawInContext (..) de mon implémentation CALayer personnalisée. UIBezierPath essaie d'utiliser UIGraphicsGetCurrentContext () qui est nul par défaut dans une couche personnalisée. La documentation en ligne l' explique très clairement -
Voici le code qui a finalement fonctionné avec mes commentaires en ligne (code Swift, mais la solution est la même malgré tout)
la source
Dans mon cas, je recevais cet avertissement lors de la création d'une image resible avec des inserts de capuchon. Le problème était que je ne laissais pas au moins 1 pixel dans la zone "non plafonnée".
la source
Je créais UIImage à partir du contexte en utilisant le code ci-dessous:
Ainsi j'obtenais l'erreur.
J'ai donc supprimé le contenu des données dérivées, redémarré mon XCode. Et ça a marché.
la source
J'ai le même problème. Dans mon projet, j'ai essayé de créer un textField et de l'ajouter à mon fichier pdf. Ancien code:
Après avoir résolu ce problème, le code a changé:
J'ai trouvé que la solution à UIColor SetFill ne fonctionne pas . Et merci à l'aide.
la source
J'ai eu l'erreur avec le code
et après avoir supprimé le code
Le monde est devenu silencieux
la source
Pour moi, la réponse était que je libérais inutilement le contexte graphique dans
drawRect:
. Lancer un point d'arrêt symbolique sur CGPostError m'a montré le coupable.la source
J'ai cette erreur comme je l'avais définie
Sans implémenter aucune des routines de délégué. La suppression de cette ligne a résolu le problème pour moi
la source
J'ai eu ce problème dans un UITextField lorsque j'ai maintenu le contact sur un champ vide avec juste du texte d'espace réservé. J'ai utilisé la solution de contournement suivante pour éliminer les champs vides:
la source
Pour moi, j'obtenais cette erreur car je libérais le CGContextRef comme indiqué ci-dessous:
La suppression de la version a résolu le problème
la source
Je l'ai eu quand j'ai mal saisi le nom de l'image dans la méthode activityImage dans la sous-classe UIActivity
Taper la bonne image l'a résolu pour moi.
la source
Désinstaller l'application du simulateur et réexécuter
la source
Comme d'autres qui ont commenté ici, j'ai reçu cet avertissement lorsque j'ai fait l'une des choses suivantes:
Sur un champ de texte vide: appuyez deux fois, appuyez longuement sur, appuyez longuement sur une seule touche.
Cela semble n'affecter que iOS 7.0.3
J'ai découvert une solution de contournement, l'avertissement ne sera pas déclenché si votre presse-papiers n'est pas NULL.
J'ai donc fait ce qui suit dans textFieldDidBeginEditing:
J'ai testé cela dans le simulateur pour iOS 7.0.3 sur les iphone 4s, 5 et 5s et je ne reçois plus l'avertissement. J'ai également testé cela dans le simulateur pour iOS 8 sur l'iphone 6 et 6 plus, mais je ne pense pas que iOS 8 soit affecté.
J'ai traversé deux jours de frustration avant de découvrir ce travail, alors j'espère vraiment que ma réponse aidera ceux d'entre vous qui ont le même problème.
la source
Si l'erreur se produit lorsque vous utilisez UIBezierPath et définissez la couleur pour le contour ou le remplissage, placez le code de couleur défini dans la fonction drawRect plutôt qu'à d'autres endroits.
la source
C'est hacky mais ça a marché pour moi.
J'ai mis en place le
UIImageView
dans leUITableViewCell
sinit
, lui donner une taille et des contraintes.Ensuite, dans mon contrôleur de vue,
cellForRowAtIndexPath
je fais ceci:Et cela évite l'erreur, puis en dessous de cela dans la fonction j'ai défini l'image réelle pour cela
UIImageView
. Le code ci-dessus est un bon défautla source