Проблема с обработкой переменных в потоках - PullRequest
0 голосов
/ 09 января 2012

Я разрабатываю приложение для отображения содержимого файловой системы. У меня есть два типа дисплеев

1) OutlineView

2) IKImagebrowserView

Пользователь может переключаться между представлениями. Я поддерживаю текущий объект представления в глобальной переменной currentview, так как несколько контроллеров должны получить к ней доступ.

Теперь, когда пользователь переключает представления, один контроллер (работающий в потоке) изменяет эту глобальную переменную. Однако у меня есть другой контроллер, который (в зависимости от какой-либо операции с БД) постоянно обновляет текущее представление, используя

[currentview reloadData];

Теперь, когда я быстро переключаюсь между представлениями, возникает проблема с объектом currentview среди этих потоков, и приложение вылетает. Отчет о сбое показывает, что сбой приложения на линии

[currentview reloadData];

Есть ли какое-то решение для этого ??

1 Ответ

1 голос
/ 09 января 2012

попробуйте использовать

@synchronized(self)
{
   [currentview reloadData];
}

, это сделает эксклюзивную блокировку, которая предотвратит одновременный доступ к ней других потоков.

...