0
當應用程序啓動一些預備過程發生。有時候,它會在一秒之內迅速完成,有時它不會結束,但沒有任何錯誤就會掛斷。CloudKit方法掛斷電話
I.e.在啓動客戶端總是獲取最後的serverChangedToken
。有時它只是掛起它不完成。我在談論生產環境,開發者很好。所以這條路線被調用,但有時它不會完成。任何想法爲什麼?我沒有任何錯誤,超時。
let fnco = CKFetchNotificationChangesOperation(previousServerChangeToken: nil)
fnco.fetchNotificationChangesCompletionBlock = {newServerChangeToken, error in
if error == nil {
serverChangeToken = newServerChangeToken
dispatch_sync(dispatch_get_main_queue(), {
(colorCodesInUtility.subviews[10]).hidden = false
})
} else {
Utility.writeMessageToLog("error 4559: \(error!.localizedDescription)")
}
dispatch_semaphore_signal(sema)
}
defaultContainer.addOperation(fnco)
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER)
我知道不建議使用信號量來控制CloudKit方法調用的流程。
你認爲最後兩行可以交換嗎?先調用dispatch_semaphore_wait
然後調用addOperation
?
奇怪的是,應用工作了iOS 8的,這種錯誤出現僅在iOS版9
也已經舉報了類似的情況亦在http://stackoverflow.com/questions/32493698/ios-9-cloudkit-query-does-not-return-anything-while-connected-to討論-cellular-netwo/32494889#32494889 –
實際上,我對qos NSOperationQualityOfServiceUserInitiated有很好的體驗,因爲這不會阻塞UI,但仍然很快。 – Red