メソッド-(void) getStatus:(NSString*) urlを戻り値の型で記述しました。
-(NSString) getStatus:(NSString*) statusUrl
{
NSURL *urlObj = [NSURL URLWithString:[statusUrl
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSError *err;
NSString *response = [NSString stringWithContentsOfURL: urlObj encoding:
NSUTF8StringEncoding error:&err];
return response;
}
しかし、stringWithContentsOfURLはメイン スレッドで操作を実行しているため、このメソッドの呼び出し中にアプリが一瞬ヒットしました。
したがって、バックグラウンド スレッドでstringWithContentsOfURL関数を実行する必要があり、応答を取得した後、応答を返したいと考えています。
私の現在のコード:
-(NSString) getStatus:(NSString*) statusUrl
{
NSURL *urlObj = [NSURL URLWithString:[statusUrl
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSError *err;
NSOperationQueue *rbQueue = [[[NSOperationQueue alloc] init] autorelease];
[rbQueue addOperationWithBlock:^{
NSString *response = [NSString stringWithContentsOfURL: urlObj
encoding: NSUTF8StringEncoding error:&err];
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
return response;
}];
}];
return @"";
}
しかし、空の文字列 @"" を受け取ったので、サーバーからの応答を受け取ることができません。同じタスクを実行する方法はありますか..