| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > iOS > Потоки и общий ресурс - как решить проблему? |
| Автор: cosamia 7.10.2012, 13:22 |
| У меня есть несколько кнопок, их действия выполняются в отдельных асинхронных потоках; Есть 1 массив который эти потоки запонляют По идее, логика такова: нажал на кнопку - заполнил массив. Нажал на другую кнопку - заплнил тот же массив но другими данными. В этой логике есть недочет: если очень быстро нажимать на кнопки, но массив будет заполняться из разных потоков. Попробовал решить эту задачу блокированием ресурса - массива используя директиву @synchronized в куске кода где идет заполнение массива В результате получил следующий результат: - если кнопки нажимать медленно, то все ок - если нажимать быстро, то программа вообще вылетает с ошибкой что размерность массива не та... Массив использую мьютебл и безазмерный |
| Автор: Bitter 7.10.2012, 15:50 |
| Ну синхронизируйте действия флагами. Нажал на кнопку - если флаг выставлен, то выход, иначе выставить флаг и заполнить данными. По завершении заполнения массива - сбросить флаг |
| Автор: cosamia 7.10.2012, 16:33 |
| Интерсная идея, попробую... |
| Автор: Maksys 8.10.2012, 08:07 |
| Попробуйте реализацию синглтона через dispatch_once |
| Автор: cosamia 8.10.2012, 16:36 | ||
Спасибо Максис, посмотрю как это сделать |