Моя цель - инициализировать большой объем данных в другом (не основном) потоке, а затем обновить UIProgressView
в основном потоке, соответствующем ходу загрузки больших данных. Для этого я использую performSelectorInBackground
для загрузки данных и обновляю прогресс на протяжении всего пути, используя performSelectorOnMainThread
.
В настоящее время я получаю ошибку EXE_BAD_ACCESS
из одного из словарей, которые я инициализирую, особенно в строке, где я устанавливаю self.someDictionary = @{...}
. self.someDictionary
принимает свойства strong
и nonatomic
и инициализируется в неосновном потоке.
Как полный новичок в многопоточности, я начинаю понимать, что мне не следует устанавливать свойство strong и nonatomic
(однако изменение его на atomic
все еще вызывало сбой). Что еще я делаю неправильно, чтобы вызвать ошибку EXE_BAD_ACCESS
, и как мне установить большой объем данных в NSDictionary в неосновном потоке и при этом иметь возможность обновлять ход выполнения в основном потоке?
Спасибо!
Редактировать 1:
Код:
//In viewWillAppear, from the main thread
[self performSelectorInBackground:@selector(populateDictionaries) withObject:nil];
//In populateDictionaries method
Dictionary *someDictionary = [[Dictionary alloc] init];
//the methods inside the Dictionary class
- (id) init{
self = [super init];
if (self){
[self makeDictionaries];
}
return self;
}
- (void)makeDictionaries{
self.insiderDictionary = @{ ...} //this line is causing the crash
}
performSelectorInBackground
, и, в конечном итоге, какой метод вызывает исключение bad_access. - person daspianist   schedule 22.03.2016populateDictionaries
и можете ли вы попробовать NSMutableDictionary` сnonatomic
- person Mukesh   schedule 22.03.2016UIProgressView
не обновляется соответствующим образом. - person daspianist   schedule 22.03.2016populateDictionaries
вызываетalloc
иinit
классаDictionary
- person daspianist   schedule 22.03.2016