//viewcontroller.m
-(void)viewdidLoad
{
self.theOneViewController= [[TheOneViewController alloc]init];
[contentsView addSubview:self.theOneViewController.view];
}
//theOneViewController
- (void)viewDidLoad
{ .
.
.
//UI WORK
.
.
//LONG WORK
[self performSelectorOnMainThread:@selector(initAppList) withObject:nil waitUntilDone:NO];
}
このコードでは、LONGWORKが終了する前に表示UIWORKを表示します。これで、スレッド効果を得ることができます。
//viewcontroller.m
-(void) buttonPressed:(id)sender -> event method
{
self.theOneViewController= [[TheOneViewController alloc]init];
[contentsView addSubview:self.theOneViewController.view];
}
//theOneViewController
- (void)viewDidLoad
{ .
.
.
//UI WORK
.
.
//LONG WORK
[self performSelectorOnMainThread:@selector(initAppList) withObject:nil waitUntilDone:NO];
}
このコードでは、LONGWORKが終了した後に表示UIWORKを表示します。だから私はスレッド効果を持つことができません。なぜ?そして、(performSelectorOnMainThread withObject:waitUntilDone :)の代わりに(performSelectorInBackground:withObject:)を使用します。しかし、これはスレッドを使用しない場合よりも遅くなります。
イベントメソッド呼び出しでスレッド効果を持たせたい。良い方法はありますか?お願い助けて!