私はAFNetworkingライブラリを使用しているブロックvoid関数を作成しました。この機能は、GET
リクエストで使用され、そのように使用されます。iOSはブロックが完了するまでブロックします
[Mics getRequestBLOCK:clientsUrlStr BlockRequest:^(NSString *response) {
//use response here
}];
すべてがうまく動作しますが、たとえば、値を返す必要のある関数でこのブロックを使用すると頭痛が発生します。
+ (NSArray*)OnlineClients
{
NSString *clientsUrlStr = [NSString stringWithFormat:@"%@/sinch/clients", ROOT_URL];
__block NSArray *clients = [[NSArray alloc] init];
[Mics getRequestBLOCK:clientsUrlStr BlockRequest:^(NSString *response) {
clients = [response componentsSeparatedByString: @","];
}];
return clients;
}
OnlineClients
配列の機能要求ブロックは完了して終了していないので、常に0アイテムを返します。
ブロック補完が関数の返り値として返されるのを待つ方法はありますか?
私はStackOverflowとgoogleでさまざまなトピックを検索していますが、解決策は見つかりませんでした。
助けてください。
あなたは非常によく検索していません。これは、スタックオーバーフローに関するiOSプログラミングのすべてで、おそらく最もよく聞かれる質問です。 – matt
[iOS:API完了ブロックを待って結果を返す]の重複している可能性があります(http://stackoverflow.com/questions/23507331/ios-waiting-for-api-completion-block-and-returning-the-result) – HAS
http://stackoverflow.com/a/23507361/1489885 – HAS