Je travaille sur une application qui lit des images (images) de la caméra, effectue un traitement avec l'image puis affiche le résultat dans l'interface utilisateur. Les images de la caméra viennent dans un délégué qui est appelé dans un autre thread (c'est-à-dire pas le thread principal) et je fais tous les trucs de traitement d'image dans ce thread et je fais juste un execSelectorOnMainThread: quand l'image est terminée.UIImage et multithread
Le problème est que, avant et après le traitement, je convertis l'image en un format interne. Pour ces conversions, j'utilise CGContext. Comme j'obtiens un étrange EXC_BAD_ACCESS, je commence à me demander s'il y a un problème à utiliser CGContext dans n'importe quel autre thread que main. Est-ce que j'appelle simplement performSelectorOnMainThread: dès que j'aurai le cadre (l'API de la caméra appellera déjà mon délégué dans un autre thread) et que je ferai tout sur le thread principal? Ou CGContext est bien avec le multithreading, et le bug est probablement quelque chose d'autre?
Un autre problème qui pourrait causer le problème: le UIImage est créé dans le thread de traitement, puis utilisé (et plus tard publié) sur le thread principal. Cela peut-il causer un problème lié à l'Autorealease-pool?
Quel type de CGContext utilisez-vous? – tadejsv
C'est un contexte bitmap, créé avec CGBitmapContextCreate. – fbafelipe
CGContext est très bien sur le thread d'arrière-plan, mais les règles normales s'appliquent. Le code que vous écrivez doit être thread-safe. Quel type de synchronisation utilisez-vous? Le UIImage pourrait être plus d'un problème. – hooleyhoop