Eri*_*tto 5 iphone xcode multithreading objective-c ios
我有一个iOS应用程序,我在后台线程上完成任务.当每个任务完成后,我想向主线程发送一条消息,以便我可以将自定义进度条移动到适当的阶段.
实现这一目标的最简单,最安全的方法是什么?
编辑1
这是我使用的方法:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
(unsigned long)NULL), ^(void) {
// get background tasks done.
[self.background backgroundMethod];
});
Run Code Online (Sandbox Code Playgroud)
编辑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.
}
Run Code Online (Sandbox Code Playgroud)
Mic*_*chs 10
这是基于你在做什么.您是否在后台使用GCD执行任务?那你就可以打电话:
dispatch_async(dispatch_get_main_queue(), ^{
//your main thread task here
});
Run Code Online (Sandbox Code Playgroud)
如果你在NSThread中运行,你可以这样做:
[myObject performSelectorOnMainThread:YOURSELECTOR withObject:YOUROBJECT waitUntilDone:NO];
Run Code Online (Sandbox Code Playgroud)
NSNotificationCenter允许线程之间的消息传递。您设置了一个“监听器”,然后可以广播通知 - Apple 文档非常好,而且很容易掌握。
| 归档时间: |
|
| 查看次数: |
6666 次 |
| 最近记录: |