我正在使用detachNewThreadSelector
ref和toTarget
self 创建一个新线程。
该线程的目的是轮询运动并在适当的时候加载图像-它循环并且仅当主线程中的原子布尔设置为true时才退出-这是在对象中设置的dealloc
。
问题是由此引起的(来自 detachNewThreadSelector 参考):
aTarget 和 anArgument 对象在分离线程执行期间被保留,然后被释放
这意味着我的对象将始终具有(最小)保留计数 1 - 因为线程不断轮询。dealloc
因此永远不会被调用。
所以我的问题是:考虑到轮询线程的存在,我如何释放我的对象?
我现在唯一的想法是创建一个对象的destroyThread函数,它设置结束线程bool,它将从我希望对象被销毁的任何地方调用。这似乎容易出错,有更好的解决方案吗?
提前致谢。
更新
我有另一个解决方案的想法 - 在线程中我检测保留计数是否为一 - 如果它是一,那么我知道线程正在保持对象处于活动状态,所以我打破循环并调用 dealloc。这是一个强大的解决方案吗?