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