バックグラウンド処理中にUIActivityIndicatorViewを表示しようとしています。 以下の単純化されたコードは、シミュレータで試してみると動作します(警告が表示されます)。しかし、Xcodeから自分の携帯電話にダウンロードすると、バックグラウンドスレッドはまったく呼び出されないようです。 (警告は表示されません)
アイデア?スレッド処理はiPhoneではなく、シミュレータで動作します
-(void)viewDidLoad {
[self performSelectorInBackground:@selector(runInAnotherThread) withObject:nil];
}
-(void) runInAnotherThread {
NSAutoreleasePool *pool = [ [ NSAutoreleasePool alloc ] init ];
int i;
for(i=0;i < 1000 ;i ++){
NSLog(@"INDEX = %d", i);
}
[self performSelectorOnMainThread : @ selector(backToMainThread) withObject:nil waitUntilDone:NO];
[ pool release ];
}
-(void) backToMainThread {
UIAlertView *completeAlert = [[UIAlertView alloc]
initWithTitle:@"Back to main "
message: @"Success"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[completeAlert show];
[completeAlert release];
}
また、マルチスレッドの場合は、NSOperationとNSOperationQueueを調べる価値があります。実際にあなたの人生はずっと楽になります – nduplessis