iphone – 在iOS上将消息从后台线程发送到主线程
发布时间:2020-12-14 19:33:24 所属栏目:百科 来源:网络整理
导读:我有一个iOS应用程序,我在后台线程上完成任务.当每个任务完成后,我想向主线程发送一条消息,以便我可以将自定义进度条移动到适当的阶段. 实现这一目标的最简单,最安全的方法是什么? 编辑1 这是我使用的方法: dispatch_async(dispatch_get_global_queue(DISP
我有一个iOS应用程序,我在后台线程上完成任务.当每个任务完成后,我想向主线程发送一条消息,以便我可以将自定义进度条移动到适当的阶段.
实现这一目标的最简单,最安全的方法是什么? 编辑1 这是我使用的方法: dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,(unsigned long)NULL),^(void) { // get background tasks done. [self.background backgroundMethod]; }); 编辑2 这是我尝试使用@Madboy答案的一个例子.在我在后台执行方法的类中,我有一个指向我的进度条的指针.我们认为这会起作用吗? (请注意对EDIT 1的更改). @implementation BackgroundClass @synthesize delegate; @synthesize customProgressBar - (void)backgroundMethod { // Run tasks } - (void)delegateSaysBackgroundMethodIsFinished { [self performSelectorOnMainThread:@selector(tasksDone:) withObject:self.customProgressBar waitUntilDone:NO]; } @implementation CustomProgressBar - (void)tasksDone { // change UI to reflect progress done. } 解决方法
这是基于你在做什么.您是否在后台使用GCD执行任务?那你就可以打电话:
dispatch_async(dispatch_get_main_queue(),^{ //your main thread task here }); 如果你在NSThread中运行,你可以这样做: [myObject performSelectorOnMainThread:YOURSELECTOR withObject:YOUROBJECT waitUntilDone:NO]; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |