スレッドを同期するセレクターを遅延させてから呼び出すことができます (ただし、これは最善の方法ではないかもしれませんが、OperationQueue と GCD も使用できます)。しかし、これはあなたの目的に役立ちます:
あなたの質問とコメントには両方が含まれているので、私は NSTextField と NSTextView を使用しました。
-(void)someProcess:(id)sender{
for (int i=0; i<100000; i++) {
for (int j=0; j<9000; j++) {
;
}
}
NSLog(@"someProcess ends");
}
-(void)startProgressIndicator{
[self.progressIndicator startAnimation:self];
}
-(void)stopProgressIndicator{
[self.progressIndicator stopAnimation:self];
}
-(void)hideScroll{
[self.textField setHidden:YES];
[self.scrollView setHidden:YES];
}
-(void)showScroll{
[self.textField setHidden:NO];
[self.scrollView setHidden:NO];
}
- (IBAction)button:(id)sender {
//hide scrollview
NSLog(@"hide sv");
[self hideScroll];
//start prog indi
NSLog(@"run");
[self performSelector:@selector(startProgressIndicator) withObject:self afterDelay:1];
//some process
[self someProcess:nil];
//stop prog indi
NSLog(@"stop");
[self performSelector:@selector(stopProgressIndicator) withObject:self afterDelay:1];
//show scrollview
NSLog(@"show sv\n\n\n\n");
[self performSelector:@selector(showScroll) withObject:self afterDelay:1];
}