同期メソッドを使用しながらこれを実現できますが、ダウンロードを開始する前に、実行ループにアクティビティ インジケーターのアニメーション化を開始する機会を与える必要があります。
これを実現するには、 performSelector:withObject:afterDelay:
with delay 0 を使用してアニメーションの開始とダウンロードの間に実行ループを配置するか、(悪いスタイルでは、より危険です) コード内で実行ループを直接呼び出すことができます。
サンプルコード:
- (void)loadPart1 {
activityIndicator = [[[UIActivityIndicatorView alloc]
initWithActivityIndicatorStyle:UIA...StyleGray]
autorelease];
activityIndicator.frame = myFrame;
[self.view addSubview:activityIndicator];
[activityIndicator startAnimating];
[self performSelector:@selector(loadPart2) withObject:nil afterDelay:0];
}
- (void)loadPart2 {
[NSURLConnection sendSynchronousRequest:request returningResponse:&response
error:&error];
[activityIndicator stopAnimating];
}
詳細はこちら:
http://bynomial.com/blog/?p=15
(ソリューション 1 またはソリューション 2 まで下にスクロールします)。