3
我對GCD方法很陌生。我正嘗試使用GCD中的塊同步來自Internet的數據。我有一種情況,如果同步操作正在進行,並且網絡出現故障,那麼我的應用程序將崩潰。當不使用塊時,我可以通過使用@ try/@ catch方法來處理它。但是當我試圖用塊和GCD來完成時,我無法處理崩潰或異常。關於如何處理崩潰的任何想法?當GCD中的某個塊無法執行時,我們該如何處理它?
調用塊中的同步帳戶:
dispatch_async(exampleQueue, ^{
dispatch_async(dispatch_get_main_queue(), ^{
[self sendSyncStatusUpdate:@"Loading Accounts"];
});
[AccountService syncAccounts];
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:YES] forKey:@"accountsFirstSyncCompleted"];
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
});
- [帳戶服務syncAccounts]方法:
@try {
ZKDescribeSObject *accountDescription = [app.client describeSObject:@"Account"];
NSString *query = [NSString stringWithFormat:@"Select %@ From Account Where LastModifiedDate > %@", [accountDescription fieldsAsCsv], [dateTimeFormatter stringFromDate:lastSyncDate]];
ZKQueryResult *result = [[app.client query:query batchSize:[NSNumber numberWithInt:200]] retain];
}
@catch (ZKSoapException *e) {
[RootViewController hadSyncError:e];
}
我不能趕上,當我們處於脫機狀態,而同步發生的異常。
你有什麼異常? – trojanfoe
沒有代碼,很難分辨出問題出在哪裏,所以我需要猜測。 您可能正在使用「錯誤的」網絡API。我從來沒有見過網絡異常(我已經使用CFNetwork和NSURLConnection,同步和異步),我不知道哪個API會拋出任何異常。也許這個異常是由於你的代碼有錯誤,你得到的東西就像一個*無法識別的選擇器*異常呢? – DarkDust
請張貼代碼! –