gpt4 book ai didi

ios - CKFetchRecordChangesOperation-更多即将到来

转载 作者:可可西里 更新时间:2023-11-01 05:34:55 26 4
gpt4 key购买 nike

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com