Saz*_*han 4 multithreading handler thread-safety uialertcontroller
假设,我提出的UIAlertController,比方说myAlert,从主胎面.myAlert有一个动作,defaultAction.我想知道defaultAction默认情况下s处理程序是否在主队列上运行.换句话说,我想知道doStuff下面的代码里面是否有一些与UI相关的操作,我是否需要用主队列包装这些UI任务,或者保证在OS的主队列中运行?
UIAlertController* myAlert = [UIAlertController alertControllerWithTitle:@"My Alert"
message:@"This is an alert."
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {
doStuff() // should I wrap doStuff in main queue, if doStuff has ui operations?
}
];
[alert addAction:defaultAction];
[self presentViewController:alert animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
您实际上是在询问它是否在主队列上运行,而不是它是否是线程安全的.
如果一个对象可以从多个线程访问/修改而没有问题,则它是"线程安全的".
您的问题的答案是,操作闭包将在主队列上运行,因为它是由用户交互产生的,因此您不需要将UI更新显式地分派到主队列上.
| 归档时间: |
|
| 查看次数: |
1170 次 |
| 最近记录: |