Cocoa touch 在另一个线程中运行MBProgressHUD?

Cocoa touch 在另一个线程中运行MBProgressHUD?,cocoa-touch,uitableview,mbprogresshud,Cocoa Touch,Uitableview,Mbprogresshud,我正在使用MBProgressHUD显示“忙碌”动画,以便在填充UITableView时使用用户。UITableView会阻止主线程,因此直到表格加载完成,动画才会出现 当运行循环完成当前循环时,UITableView占用主线程时,是否有方法使忙碌的动画在另一个线程上运行?UIKit会绘制。换句话说,如果您正在配置一个视图(例如,MBProgressHUD),那么在下一次运行循环迭代之前,这些更改将不可见。因此,如果您不允许运行循环通过阻塞主线程来旋转,UI更改将不会立即出现 如果不能在后台线程

我正在使用
MBProgressHUD
显示“忙碌”动画,以便在填充UITableView时使用用户。
UITableView
会阻止主线程,因此直到表格加载完成,动画才会出现


当运行循环完成当前循环时,
UITableView
占用主线程时,是否有方法使忙碌的动画在另一个线程上运行?

UIKit会绘制。换句话说,如果您正在配置一个视图(例如,MBProgressHUD),那么在下一次运行循环迭代之前,这些更改将不可见。因此,如果您不允许运行循环通过阻塞主线程来旋转,UI更改将不会立即出现

如果不能在后台线程上完成工作,则需要在主线程上启动长时间运行的阻塞任务之前,让运行循环完成其循环

您可以通过在下一次运行循环迭代中安排执行来实现这一点

// Setup and show HUD here

[self performSelector:@selector(myTask) withObject:nil afterDelay:0.001];
在myTask结束时隐藏HUD。 也可以手动运行运行循环

// Setup and show HUD here

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate distantPast]];

// Insert myTask code here
// Hide the shown HUD here
或者(如果可以使用块)


上述代码导致内存泄漏。知道怎么解决吗?你能说得更具体些吗?哪种代码?上面的“代码”实际上并没有做任何与内存管理相关的事情,它只是一个可用API的列表。@MatejBukovinski当加载一个UITableView,阻止主线程直到它被加载时,“myTask”是什么?是的,我也有同样的问题。。但是
dispatch\u-after
也很有魅力!!英雄联盟它不起作用!对于更复杂的工作,错误出现的频率较低或总是出现
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.001 * NSEC_PER_SEC), dispatch_get_main_queue(), ^(void){
    // Insert myTask code here
});