ios - CKFetchRecordChangesOperation-更多即将到来

标签 ios ios8 cloudkit

changesOperation.fetchRecordChangesCompletionBlock = ^(CKServerChangeToken *serverChangeToken, NSData *clientChangeTokenData, NSError *operationError){

    //encode and save token

    NSData *encodedServerChangeToken = [NSKeyedArchiver archivedDataWithRootObject:serverChangeToken];

    [[NSUserDefaults standardUserDefaults] setObject:encodedServerChangeToken forKey:fetchToken];

    [[NSUserDefaults standardUserDefaults] synchronize];



    //handle more - **this causes a retain cycle**
    if(changesOperation.moreComing){

    }

};

你好,只是想知道 fetchRecordChangesCompletionBlock,文档说:

If the server is unable to deliver all of the changed results with this operation object, it sets this property to YES before executing the block in the fetchRecordChangesCompletionBlock property. To fetch the remaining changes, create a new CKFetchRecordChangesOperation object using the change token returned by the server.

在上面的代码中,这会导致保留循环,那么应该如何处理这个问题,以及在重新创建操作时是否可以使用已经创建的相同完成 block ?

最佳答案

你应该像这样定义一个弱更改操作

__weak CKFetchNotificationChangesOperation *weakChangesOperation = changesOperation;
changesOperation.fetchRecordChangesCompletionBlock = ^(CKServerChangeToken *serverChangeToken, NSData *clientChangeTokenData, NSError *operationError){
    ...
    if(weakChangesOperation.moreComing){
    }

关于ios - CKFetchRecordChangesOperation-更多即将到来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25621871/

相关文章:

使用 Sinch 和 Swift 进行 iOS 推送通知

ios - 只允许带有标签栏和 UInavigationcontroller 的方向肖像?

ios8 - 自定义 iOS8 标注气泡 (Swift)

ios - 如何在不在屏幕上闪烁顶部和底部之间的任何呈现的 VC 的情况下关闭带有动画的模态视图 Controller 堆栈?

ios - 播放通过 CloudKit 作为 CKAsset 下载的视频 - iOS

ios - 如果使用 CKFetchRecordZoneChangesOperation 时应用程序被终止,会发生什么?

ios - 为什么-stringWithContentsOfURL : returning nil for my JSON communication here?

iOS:在 while 循环中使用 block 回调的异步方法

ios - 位置坐标在 swift 中返回 nil

ios - 当 CloudKit 错误发生时,客户端是否应该继续重新发送?