小编Ima*_*ake的帖子

Objective-C多线程,当对象在执行方法时获得dealloc时会发生什么?(以及如何预防?)

我正在为iPhone编写一个应用程序,并且遇到了这种情况.

我有一个视图控制器myViewController,只要用户点击屏幕上的"后退"按钮,它就会解除锁定.后台有一个与远程服务器通信的线程,可以在myViewController中发送方法updateUI方法.

如果后台线程在myViewController中消息updateUI会发生什么,但是用户恰好在正确的时间点击了"后退"按钮,这样当updateUI仍在执行时它会导致myViewController dealloc?

我的猜测是dealloc方法将运行,如果updateUI最终使用空指针,应用程序可能会崩溃.假设是这种情况,我现有的解决方案是:

[self retain];
// updateUI code here
[self release];
Run Code Online (Sandbox Code Playgroud)

我不确定这是否是最佳解决方案,因为我觉得这在处理多个线程时是一个常见问题.

我的假设是否正确?如果是这样,有更好的解决方案吗?

iphone multithreading objective-c

3
推荐指数
1
解决办法
1038
查看次数

标签 统计

iphone ×1

multithreading ×1

objective-c ×1