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,文档说:
如果服务器无法使用此操作对象传递所有更改的结果,它会在执行 fetchRecordChangesCompletionBlock 属性中的块之前将此属性设置为 YES。要获取剩余的更改,请使用服务器返回的更改令牌创建一个新的 CKFetchRecordChangesOperation 对象。
在上面的代码中,这会导致一个保留周期,那么应该如何处理这个问题,在重新创建操作时是否可以使用已经创建的相同完成块?