相关疑难解决方法(0)

如何在此块中强烈修复"捕获'块'可能会导致保留周期"

我正在研究这个代码,它在网上执行一些冗长的异步操作,当它完成时它触发一个完成块,执行一些测试,如果一个变量得到一个值,另一个冗长的操作应该立即开始:

-(void) performOperation
{

    void(^completionBlock) (id obj, NSError *err, NSURLRequest *request)= ^(id obj,NSError *err, NSURLRequest *request){


        int variable=0;

        // Do completion operation A
        //...
        //...

        // Do completion operation B                
        //Get the variable value

        if(variable>0){
            [self doLengthyAsynchronousOperationWithCompletionBlock: completionBlock];
        }

    };

//Perform the lenhgty operation with the above completionBlock
    [self doLengthyAsynchronousOperationWithCompletionBlock: completionBlock];

}

-(void) doLengthyAsynchronousOperationWithCompletionBlock: completionBlock
{
    //Do some lengthy asynchronous stuff
}
Run Code Online (Sandbox Code Playgroud)

使用此代码,我从编译器收到此警告:

WARNING: Block pointer variable 'completionBlock' is uninitialized when caputerd by the block
Run Code Online (Sandbox Code Playgroud)

我变了:

void(^completionBlock) (id obj, NSError …
Run Code Online (Sandbox Code Playgroud)

asynchronous objective-c ios objective-c-blocks retain-cycle

12
推荐指数
1
解决办法
6186
查看次数