CATiledLayer drawLayer:inContext: crashing when the view is deallocated while the image to draw is being retrieved
My app crashes when my ViewController gets deallocated while my CATiledLayer is retrieving the image to draw in a background thread. I get a message
-[MyViewController respondsToSelector:]: message sent to deallocated instance 0x8f58e00
and the debugger shows
0 ___forwarding___
1 __forwarding_prep_0__
2 -[CATiledLayer(CATiledLayerPriv开发者_开发知识库ate) canDrawRect:levelOfDetail:]
3 tiled_layer_render
4 CAImageProviderThread
5 CAImageProviderBackgroundThread
6 CA::DispatchGroup::thread
7 thread_fun
8 _pthread_start
Now, I do want to release that certain instance of MyViewController because I don't need it anymore. But how do I stop it from crashing when it returns from the background thread?
Solved it. I should have set the CATiledLayer's delegate to nil when deallocating MyViewController. I'll remember to do that for delegates from now on.
精彩评论