Использование только одного NSThread для одного метода
У меня есть кнопка обновления в моем приложении и методе "doRefresh
кто работает в фоновом потоке. Теперь, если пользователь нажимает двойной щелчок - метод doRefresh
запустить 2 раза и более. Я хочу, если пользователь нажимает двойной щелчок и больше щелчков, все предыдущие потоки перестают работать и завершаются. И новый метод начинает работать в новой теме. Как мне это сделать?
Более подробная информация: я работаю с CoreData и анализирую длинный XML-файл для объектов отношений заполнения. Например, когда пользователь нажимает кнопку обновления 10 раз, привет ловит следующую ошибку:
reason: '*** Collection <__NSCFSet: 0x5b7dd50> was mutated while being enumerated.<CFBasicHash 0x5b7dd50 [0x1503400]>{type = mutable set, count = 8
1 ответ
Here's how things may work
1. Keep a reference to last thread spawned
2. In each thread spawned keep a variable, say var_cancel
3. When a new thread is created, set the var_cancel to true for previous thread.
4. In the thread, check for var_cancel at short durations. If found true, exit the thread.
5. Make sure the thread does not produce any side effects between var_cancel set true to exit of thread.