iPhone простейшая связь между потоками - PullRequest
0 голосов
/ 08 марта 2010

У меня есть приложение для iPhone со вторичным потоком для обработки XML. В некоторых из этих методов мне нужны ссылки на словари (для поиска, а не для модификации), созданные и заполненные в основном потоке.

Документация Apple указала мне, что глобальные переменные могут быть лучшим способом для достижения этой цели. Я только сейчас уверен, как будет выглядеть реализация. Определите словари в верхней части .m и получите к ним обычный доступ во вторичном потоке?

1 Ответ

1 голос
/ 08 марта 2010

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

(Если это так, ваш инициализатор должен сначала выделить NSMutableDictionary в локальную переменную, заполнить ее, а затем скопировать готовый локальный в глобальный с использованием NSDictionary +dictionaryWithDictionary: или -initWithDictionary:.)

В качестве альтернативы, может быть, вы не сохраняете глобал при его инициализации?

...