2010-09-07 24 views
4

Mon application se bloque lorsque mon ViewController est libéré alors que mon CATiledLayer récupère l'image pour dessiner un thread d'arrière-plan. Je reçois un messageCATiledLayer drawLayer: inContext: se bloque lorsque la vue est désallouée alors que l'image à dessiner est en cours de récupération

-[MyViewController respondsToSelector:]: message sent to deallocated instance 0x8f58e00 

et le débogueur montre

0 ___forwarding___ 
1 __forwarding_prep_0__ 
2 -[CATiledLayer(CATiledLayerPrivate) canDrawRect:levelOfDetail:] 
3 tiled_layer_render 
4 CAImageProviderThread 
5 CAImageProviderBackgroundThread 
6 CA::DispatchGroup::thread 
7 thread_fun 
8 _pthread_start 

Maintenant, je ne veux libérer que certains cas de MyViewController parce que je ne ai plus besoin. Mais comment puis-je l'empêcher de planter quand il revient du fil d'arrière-plan?

Répondre

6

Résolu. J'aurais dû définir le délégué de CATiledLayer à zéro lors de la désallocation de MyViewController. Je vais me souvenir de le faire pour les délégués à partir de maintenant.