我正在为iPhone编写一个应用程序,并且遇到了这种情况.
我有一个视图控制器myViewController,只要用户点击屏幕上的"后退"按钮,它就会解除锁定.后台有一个与远程服务器通信的线程,可以在myViewController中发送方法updateUI方法.
如果后台线程在myViewController中消息updateUI会发生什么,但是用户恰好在正确的时间点击了"后退"按钮,这样当updateUI仍在执行时它会导致myViewController dealloc?
我的猜测是dealloc方法将运行,如果updateUI最终使用空指针,应用程序可能会崩溃.假设是这种情况,我现有的解决方案是:
[self retain];
// updateUI code here
[self release];
Run Code Online (Sandbox Code Playgroud)
我不确定这是否是最佳解决方案,因为我觉得这在处理多个线程时是一个常见问题.
我的假设是否正确?如果是这样,有更好的解决方案吗?