Сейчас я разрабатываю приложение для iOS с помощью evernote api.и у меня есть некоторые проблемы с многопоточностью.Ниже представлен механизм многопоточности в моем приложении, это хорошо или плохо?любые предложения приветствуются.
- Используйте MainThread (поток a) для отображения и обновления пользовательского интерфейса.
- Используйте поток b для загрузки noteList из evernote, когда пользователь находится на странице noteList.
- Используйте Поток c для загрузки noteResource из evernote, когда пользователь на странице noteDetail.
Если пользователь щелкнет одну заметку на странице noteList, когда Поток b не закончен.я должен отменить тему b, прежде чем использовать тему c для загрузки noteResource?или безопасно одновременно запускать как нить b, так и нить c?
Есть ли какие-либо документы или инструкции по этому вопросу?
Я добавил код ниже, верно?При первом входе пользователя в систему будет работать masterSync, заголовок заметки будет загружен и отображен.После этого, если пользователь нажмет кнопку синхронизации, masterSync снова запустится, но теперь он завершится сбоем при доступе authenticateToken из authResult, когда noteStore alloc / init, я сохранил authResult при успешном входе пользователя, верно?
-(void)sync:(id)obj {
NSOperationQueue *operationQueue = [AppDelegate sharedOperationQueue];
if ([obj isKindOfClass:[Note class]]) {
self.detailSync = [[[EvernoteDetailSync alloc] initWithNote:obj] autorelease];
detailSync.noteStore =[[[EvernoteNoteStore alloc] initWithToken:[authResult authenticationToken] shardId:[[authResult user] shardId]] autorelease];
[operationQueue addOperation:detailSync];
} else {
self.masterSync = [[[EvernoteMasterSync alloc] initWithNotebookGuid:obj] autorelease];
masterSync.noteStore =[[[EvernoteNoteStore alloc] initWithToken:[authResult authenticationToken] shardId:[[authResult user] shardId]] autorelease];
[operationQueue addOperation:masterSync];
}
}