あなたは多くの方法でそれを行うことができます。 1つの方法は、プロパティを宣言してブロック内で使用することです。
非同期呼び出しを行うときには、それらの呼び出しに応答する独自のカスタムブロックを用意することをお勧めします。
は、最初の完了ブロックを宣言します。
typedef void (^ ResponseBlock)(BOOL success, id response);
とのparamとして、このブロックを使用する方法宣言:
- (void)processMyAsynRequestWithCompletion:(ResponseBlock)completion;
をし、この方法では、あなたの非同期呼び出しが含まれた:
- (void)processMyAsynRequestWithCompletion:(ResponseBlock)completion{
[NSURLConnection sendAsynchronousRequest:rq queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
NSError *parseError = nil;
dictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&parseError];
NSLog(@"Server Response (we want to see a 200 return code) %@",response);
NSLog(@"dictionary %@",dictionary);
completion(YES,response); //Once the async call is finished, send the response through the completion block
}];
}
このメソッドは、任意の場所で呼び出すことができます。
[classInWhichMethodDeclared processMyAsynRequestWithCompletion:^(BOOL success, id response) {
//you will receive the async call response here once it is finished.
NSDictionary *dic = (NSDictionary *)response;
//you can also use the property declared here
_dic = (NSDictionary *)response; //Here dic must be declared strong
}];
**内部で使用することができます** – vadian
@vadian、これらの値をテーブルビューに配置します。では、どうすればそれを内部で使うことができますか? – User9975
コードを入力して、完了ブロック内のテーブルビューを再ロードします。非同期的に考えてください – vadian