如何从主线程中杀死performSelectorInBackground:withObject:
创建的线程?我需要强制终止冻结线程。
答案 0 :(得分:9)
你不能从主线程中杀死后台线程,后台线程中执行的方法必须返回以使线程结束。
你的实际问题似乎是你的后台线程正在冻结,你应该解决这个问题,而不是试图解决它。
答案 1 :(得分:0)
我不确定这是否有所帮助,但这里有:
假设您正在调用来自A类的performSelector
调用。假设A类即将从B类的内存中释放(如果选择器尚未执行,那么您可能会正在崩溃 - 因此你在SO上发布这个问题:
无论您何时从B发布A,请执行以下操作:
[NSObject cancelPreviousPerformRequestsWithTarget:A];
答案 2 :(得分:0)
Apple documentation说
退出线程的推荐方法是让它退出入口点 常规的。虽然是Cocoa,POSIX和Multiprocessing Services 提供直接杀死线程的例程,使用这样的例程 强烈劝阻。杀死一个线程会阻止该线程 自己清理干净。线程分配的内存可以 可能被泄露以及目前正在使用的任何其他资源 线程可能无法正确清理,从而产生潜在问题 后面。