問題なのは、くるくるの開始後すぐに重い処理を実行するとくるくるしないという事です。
くるくる開始と処理を別スレッドにする事で解決しました。
情報筋によると、メインスレッドでは重い処理をしないのが基本とあるので、重い処理は別スレッドでやろう。さらに情報筋曰く、くるくる開始と停止はメインスレッドでやると吉という。
[self->mIndicator startAnimating];
//1 処理を別スレッドで実行
[self performSelectorInBackground:@selector(ProcessingProgress) withObject:nil];
//2 処理を別スレッドで実行
[NSThread detachNewThreadSelector:@selector(ProcessingProgress)toTarget:self withObject:self];
//【スレッド】進捗の表示
- (void)ProcessingProgress{
@autoreleasepool {
//画像処理
ConvertImage()
//アニメーションの停止
if ([self->mIndicator isAnimating] == true) {
[self->mIndicator stopAnimating];
}
}
}
1と2はどちらもスレッドを実行するための記述ですが、今回は1を使ってます。
下記サイトを参考にしました。
ありがとうございました。
NSThreadを使ったスレッド処理
http://iphone-dev.g.hatena.ne.jp/sohei/20100524/1274704461
ARC時スレッド内
http://blog.natsuapps.com/2011/11/ios5-arc-autorelease-bridge-xcode.html
無題メモランダム
http://blog.mudaimemo.com/2010/05/iphoneuiactivityindicatorview.html
0 件のコメント:
コメントを投稿