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