当我的应用程序启动时,我需要使用一个线程在后台执行一些操作。
因此具有以下功能,我怎么能在后台运行它?
-(void) performOperationInBackground{
//Call to other functions
}
答案 0 :(得分:4)
由于没有专门回答问题而被拒绝投票的风险,对于OS X和iOS开发,通常不鼓励使用线程:
OS X和iOS都采用了更加异步的执行方法 并发任务比传统上基于线程的任务更多 系统和应用程序。而不是直接创建线程, 应用程序只需定义特定任务然后让系统 执行它们。通过让系统管理线程,应用程序 获得原始线程无法实现的可伸缩性级别。应用 开发人员也可以获得更简单,更高效的编程模型。
请参阅Apple的Concurrency Programming Guide。
取决于线程,您将使用操作队列或调度队列,具体取决于方案。
无论你如何做,最好像Black Pixel的performSelectorOnMainThread vs. dispatch_async文章所描述的那样保持一致。
答案 1 :(得分:2)
试试这个:
[self performSelectorInBackground:@selector(performOperationInBackground) withObject:nil];
答案 2 :(得分:1)
你可以这样做:
dispatch_async(dispatch_get_main_queue(), ^{
[self performOperationInBackground];
});
但请记住,如果在此操作之后您需要更新UI,则必须在主线程中执行,因此在此之后:
-(void) performOperationInBackground {
//do anything in background
//call method for update user interface in the Main Thread
[self performSelectorOnMainThread:@selector(updateUI) withObject:Nil waitUntilDone:YES];
}
-(void)updateUI {
//update user interface
}