Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 从内部块调用块_Objective C - Fatal编程技术网

Objective c 从内部块调用块

Objective c 从内部块调用块,objective-c,Objective C,在Objective-c中,我们声明了一个作为web请求回调的完成块 如果请求失败,那么我希望能够从完成块中再次调用该函数。当我这样做时,由于未完全定义块,我获得了EXC_BAD_访问权限 这很烦人,因为在Java中,我可以通过侦听器来实现这一点 是否可以从内部调用完成块 谢谢 下面的代码抛出了错误,请问我如何修复它 CustomErrorBlock errorBlock = ^(NSError *error) { _processing = NO; loadingView.h

在Objective-c中,我们声明了一个作为web请求回调的完成块

如果请求失败,那么我希望能够从完成块中再次调用该函数。当我这样做时,由于未完全定义块,我获得了EXC_BAD_访问权限

这很烦人,因为在Java中,我可以通过侦听器来实现这一点

是否可以从内部调用完成块

谢谢

下面的代码抛出了错误,请问我如何修复它

CustomErrorBlock errorBlock = ^(NSError *error) {

    _processing = NO;
    loadingView.hidden = YES;

    self.infoText.hidden = NO;
    self.infoText.text = @"A network connection error has occurred.";
};


CustomCompletionBlock completionBlock = ^(NSData *data){

    if(![self processGetTransactions:data withDict:updateDict]) {

        [webClient getTransactions:updateDict WithCompletionBlock:completionBlock andErrorBlock:errorBlock];
    }
};
[webClient getTransactions:updateDict WithCompletionBlock:completionBlock andErrorBlock:errorBlock];

应该能够通过使用_块停止EXC_BAD_访问崩溃,该块告诉编译器必须以特殊的方式处理它,还可以使用_弱小,使对象无法保持强

__block CustomErrorBlock errorBlock = ^(NSError *error) {

    _processing = NO;
    loadingView.hidden = YES;

    self.infoText.hidden = NO;
    self.infoText.text = @"A network connection error has occurred.";
};


__block CustomCompletionBlock completionBlock = ^(NSData *data) {

    if(![self processGetTransactions:data withDict:updateDict]) {
        __weak CustomCompletionBlock weakCompletionBlock = completionBlock; // Note seems to always have retain cycle

        [webClient getTransactions:updateDict WithCompletionBlock:weakCompletionBlock andErrorBlock:errorBlock];
    }
};

    [webClient getTransactions:updateDict WithCompletionBlock:completionBlock andErrorBlock:errorBlock];

注意:由于某些原因,弱对象仍然显示一条关于对象变强的消息,但它可以正常工作

你能发布所有函数吗?你复制completionBlock吗?复制是什么意思?