evernote apiを使ってiOS上にアプリケーションを開発中です。私はマルチスレッドに関するいくつかの問題があります。以下は、私のアプリのマルチスレッドの仕組みです、良いか悪いですか?いかなる提案も大歓迎です。iOS上でevernote apiを使ってマルチスレッドを処理する方法
- UIを表示および更新するには、MainThread(スレッドa)を使用します。
- noteListのページで、スレッドbを使用してevernoteからnoteListをダウンロードします。
- noteDetailページで、スレッドcを使用してevernoteからnoteResourceをダウンロードします。
スレッドbが終了していないときにnoteListページの1つのメモをクリックした場合。 noteResourceをダウンロードするにはスレッドCを使用する前にスレッドbをキャンセルする必要がありますか?スレッドbとスレッドcの両方を一度に実行するのは安全ですか?
これに関連する文書や授業はありますか?
以下のコードを追加しました。ユーザーが最初にログインすると、masterSyncが実行され、タイトルがダウンロードされて表示されます。その後、ユーザーが同期ボタンを押すと、masterSyncが再び実行されますが、今はアクセス認証時にクラッシュします。noteStore alloc/init、authResultの認証時にユーザーのログインが成功したときに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];
}
}
私のコードを追加しました。あなたはそれを見ることができますか?ありがとう –
私はマルチスレッドとの同期の前に毎回relogInする必要がありますか?はいの場合は、メインスレッドまたは2番目のスレッドでrelogInする必要がありますか? –