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(CATiledLayerPrivate) 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.
来源:https://stackoverflow.com/questions/3656011/catiledlayer-drawlayerincontext-crashing-when-the-view-is-deallocated-while-th