IKImageView and kCGErrorIllegalArgument

RAAAHHH !!! Putain de SDK de con ! Bon, belle entrée en matière pour un post qui ne servira probablement qu’à ma petite mémoire défaillante, mais bon, si jamais un jour quelqu’un d’aussi tordu que moi rencontre le même problème, au moins Google devrait lui renvoyer cet article où il y trouvera son bonheur :) (enfin, j’espère !)

Le problème : Vous avez une application qui utilise une IKImageView pour afficher des images, les manipuler, etc. Cet IKImageView, vous l’avez overridé pour lui rajouter quelques fonctionnalités, comme par exemple la possibilité de passer en plein écran. Et là, c’est le drame ! Votre IKImageView marche bien quand il n’est pas en plein écran, mais dès que vous passez en fullscreen, paf, écran blanc uni, avec les laconiques messages d’erreur suivants dans votre log :

<Error>: kCGErrorIllegalArgument: CGSGetSurfaceBounds
<Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint()
         to catch errors as they are logged.

Hum … petite recherche sur le net, et là, pfff, aucune info (en tout cas à l’heure d’écrire ces lignes) En tout cas, aucun ressemblant de près ou de loin à mon setup.

Solution : Dans mon cas, j’avais un IBoutlet nommé window. J’utilise cet outlet pour faire de mon ImageView le first responder, lorsque je passe en plein écran (ça me permet d’être sur que mon ImageView récupère bien les évènements clavier / souris en fullscreen au lieu d’un autre élément de mon appli en background) Et c’est précisément cet outlet à la con qui posait problème ! Visiblement, IKImageView utilise en interne un window, qui ne correspond pas à celui que moi j’avais setté. Du coup lorsuq’il passait en fullscreen, bah gros problème … Et comme ça break pas, impossible de débugger. Sans compter que le “Set a breakpoint …” j’ai pas réussit à le faire marcher … vive le message d’erreur utile.

Bref, pour conclure, si vous créez une classe héritant de IKImageView, bannissez window de vos noms de variable. Pour ma part, j’utilise myWindow à la place, et je n’ai plus aucun bug !

One thought on “IKImageView and kCGErrorIllegalArgument

Leave a Reply

Your email address will not be published. Required fields are marked *