私は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`から呼び出しスタックを上げると、return型を持つメソッドを変更してvoidを返し、代わりに呼び出すパラメーターとしてブロックを受け入れる必要があることです。これらすべての方法を変更しなければならないのは過剰のようです。概念的に何かが欠けていますか?