値 (NSArray) を返すメソッドがあり、メソッドの実装には、完了ブロックを持つメソッドの呼び出しが含まれています。私がやりたいことは、完了ブロック内から取得した NSArray を返すことです。
完了ブロックの実行が完了するまで、このメソッドから値を返すのを遅らせる方法はありますか? ありがとうございました。
値 (NSArray) を返すメソッドがあり、メソッドの実装には、完了ブロックを持つメソッドの呼び出しが含まれています。私がやりたいことは、完了ブロック内から取得した NSArray を返すことです。
完了ブロックの実行が完了するまで、このメソッドから値を返すのを遅らせる方法はありますか? ありがとうございました。
つまり、次のようなものが欲しいということです。
- (NSArray*)someMethod {
[self someMethodWithACompletionBlock:^(NSArray *array) {
return array;
}];
}
残念ながら、そのようなことは起こりません (ブロックは関数であるため、その内部で戻ると、コンパイラは、囲んでいるメソッドではなくブロックから値を返そうとしていると見なされます)。配列を out-parameter にし、ブロッキング関数を使用して適切に変更された配列を返します。
- (NSArray*)someMethod {
NSArray *retVal = nil;
[self someMethodWithAnOutParameter:&retVal];
return retVal;
}