非常に簡単な設定で少し質問を更新しました。 appdelegate.h /メートルで複数の警告表示を連続して表示:最後の表示のみを表示
、viewcontroller.m
で
@property() UIAlertView *dialog;
-(void) showDialog:(NSString *)message {
if (!dialog) {
dialog=[[UIAlertView alloc] initWithTitle:xx];
}
[dialog performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:YES];
}
-(void) dismissDialog {
if(dialog) {
[dialog dismissWithClickedbuttonIndex:0 animated:YES];
dialog=nil;
}
}
ボタンでのみ、最後の "START3は" 久しぶりに表示されます
-(IBAction) clicked:(id)sender {
dispatch_async(dispatch_get_main_queue(), ^{
AppDelegate *_app = xxx;
[_app showDialog:@"start1"];
sleep(10);
[_app dismissSyncDialog];
[_app showSyncDialog:@"start2"];
sleep(10);
[_app dismissSyncDialog];
[_app showSyncDialog:@"start3"];
sleep(10);
[_app dismissSyncDialog];
});
}
をクリックします。
メインスレッドがフリーズしているように見えます。そのため、「start3」はスレッドが完了した後にのみ表示されます。
この問題を解決する方法はありますか?ありがとう。
showSyncDialogの最初の呼び出しは、メインスレッドまたはバックグラウンドスレッドで実行されますか? – Binni
メインスレッドです。問題なく表示されます。 – user534498