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