Ios 如何在Swift中锁定线程?

Ios 如何在Swift中锁定线程?,ios,swift,Ios,Swift,我有一个方法,在它里面调用一个async方法。如何锁定主线程,直到async方法的完成处理程序完成为止?您从不锁定主线程,这是一种非常糟糕的用户体验——只需禁用整个UI(这是您的意思吗?)。差不多 [UIApplication sharedApplication].keyWindow.userInteractionEnabled = NO; 并在异步操作完成后重新启用: [UIApplication sharedApplication].keyWindow.userInteractionEna

我有一个方法,在它里面调用一个
async
方法。如何锁定主线程,直到
async
方法的完成处理程序完成为止?

从不锁定主线程,这是一种非常糟糕的用户体验——只需禁用整个UI(这是您的意思吗?)。差不多

[UIApplication sharedApplication].keyWindow.userInteractionEnabled = NO;
并在异步操作完成后重新启用:

[UIApplication sharedApplication].keyWindow.userInteractionEnabled = YES;
但请记住显示一个活动指示器,或者一些应用程序仍在运行的指示


或者考虑一个类似的组件。

< P> > <强>永远不要锁定主线程< /强>,这是一个非常糟糕的用户体验——只需禁用整个UI(这就是你的意思吗?)。差不多

[UIApplication sharedApplication].keyWindow.userInteractionEnabled = NO;
并在异步操作完成后重新启用:

[UIApplication sharedApplication].keyWindow.userInteractionEnabled = YES;
但请记住显示一个活动指示器,或者一些应用程序仍在运行的指示


或者考虑一个类似的组件。

< P> > <强>永远不要锁定主线程< /强>,这是一个非常糟糕的用户体验——只需禁用整个UI(这就是你的意思吗?)。差不多

[UIApplication sharedApplication].keyWindow.userInteractionEnabled = NO;
并在异步操作完成后重新启用:

[UIApplication sharedApplication].keyWindow.userInteractionEnabled = YES;
但请记住显示一个活动指示器,或者一些应用程序仍在运行的指示


或者考虑一个类似的组件。

< P> > <强>永远不要锁定主线程< /强>,这是一个非常糟糕的用户体验——只需禁用整个UI(这就是你的意思吗?)。差不多

[UIApplication sharedApplication].keyWindow.userInteractionEnabled = NO;
并在异步操作完成后重新启用:

[UIApplication sharedApplication].keyWindow.userInteractionEnabled = YES;
但请记住显示一个活动指示器,或者一些应用程序仍在运行的指示



或者考虑一个类似于./P>的组件,我的ASYNC方法返回表视图的数据,所以我需要把它锁起来直到有数据填充到表中。为什么不显示一个加载指示器(稍后在异步调用完成时更新)?然后在表视图中显示一个空的表视图,或者类似“加载…”的文本。并在数据到达后调用

[tableView reloadData]
。表视图应该能够处理空(
nil
)数据源。因为我是iOs新手,不知道存在
[tableView reloadData]
。然而,我只是尝试在完成处理程序中调用它,它使appNvm崩溃。崩溃是由于其他原因造成的。这个修好了,谢谢!我的async方法返回tableview的数据,因此我需要将其锁定,直到有数据填充该表。@Deekor:为什么?为什么不显示一个加载指示器(稍后在异步调用完成时更新)?然后在表视图中显示一个空的表视图,或者类似“加载…”的文本。并在数据到达后调用
[tableView reloadData]
。表视图应该能够处理空(
nil
)数据源。因为我是iOs新手,不知道存在
[tableView reloadData]
。然而,我只是尝试在完成处理程序中调用它,它使appNvm崩溃。崩溃是由于其他原因造成的。这个修好了,谢谢!我的async方法返回tableview的数据,因此我需要将其锁定,直到有数据填充该表。@Deekor:为什么?为什么不显示一个加载指示器(稍后在异步调用完成时更新)?然后在表视图中显示一个空的表视图,或者类似“加载…”的文本。并在数据到达后调用
[tableView reloadData]
。表视图应该能够处理空(
nil
)数据源。因为我是iOs新手,不知道存在
[tableView reloadData]
。然而,我只是尝试在完成处理程序中调用它,它使appNvm崩溃。崩溃是由于其他原因造成的。这个修好了,谢谢!我的async方法返回tableview的数据,因此我需要将其锁定,直到有数据填充该表。@Deekor:为什么?为什么不显示一个加载指示器(稍后在异步调用完成时更新)?然后在表视图中显示一个空的表视图,或者类似“加载…”的文本。并在数据到达后调用
[tableView reloadData]
。表视图应该能够处理空(
nil
)数据源。因为我是iOs新手,不知道存在
[tableView reloadData]
。然而,我只是尝试在完成处理程序中调用它,它使appNvm崩溃。崩溃是由于其他原因造成的。这个修好了,谢谢!使用线程的想法是不让你锁定主线程,这不是打破那些惯例吗?使用线程的想法是不让你锁定主线程,这不是打破那些惯例吗?使用线程的想法是不让你锁定主线程,这不是打破了那些惯例吗?使用线程的想法是,你不必锁定主线程,这不是打破了那些惯例吗?