我是 iOS 块的新手,我正在尝试找出使用它们的正确方法。这是我的设置:
我有一个foo
返回操作(RKObjectRequestOperation
)是否成功的方法。我为操作提供了一个成功块和一个失败块,所以在成功块中我想foo
返回 YES,在失败块中我想foo
返回NO
。
例如:
- (BOOL) foo {
RKObjectRequestOperation *request = [[RKObjectRequestOperation alloc] initWithRequest:urlRequest responseDescriptors:responseDescriptors];
[request setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSLog(@"Success!");
// return YES?
} failure:^(RKObjectRequestOperation *operation , NSError *error) {
NSLog(@"Failure!");
// return NO?
}];
[request start];
}
但是,据我所知,块只能返回自己的值;它不能导致调用它的方法返回。这个对吗?如果是这种情况,我唯一能想到的就是foo
将另一个块作为参数,在操作成功或失败时调用该参数。这样做的问题是,从 'foo' 向上调用堆栈,我将不得不更改任何具有返回类型的方法以返回 void 并接受一个块作为参数来调用。不得不改变所有这些方法似乎过分了。我在概念上错过了什么吗?