在后台和主线程 ios 中执行
Posted
技术标签:
【中文标题】在后台和主线程 ios 中执行【英文标题】:execution in background and main thread ios 【发布时间】:2011-03-07 07:08:31 【问题描述】:我有一个函数 foo(),它在后台线程上调用函数 bar
foo()
[self performSelectorInBackground:@selector(bar:) withObject:nil];
bar()
//some initialsations
//calling another function
bar1();//also in background
//after bar1() returns
//marking following statement with *
[self performSelectorOnMainThread:@selector(stopActivityIndicator:)withObject:nil wailUntilDone:YES];
bar() 在调用另一个函数之前会做一些事情。 bar() 所做的一切都在后台。同时,我正在展示 ActivityIndicator。一旦 bar() 中的函数返回,我将调用一个将在 MainThread 上停止ActivityIndicator 的函数。
现在,我想在调用 stopActivityIndicator() 之前调用 MainThread 中的另一个函数
我该怎么做?
我可以再发一个[self performSelectorOnMainThread:@selector(functionIWantToCall:)withObject:nil wailUntilDone:YES];
* 之前?
【问题讨论】:
【参考方案1】:您可以调度一个块在主线程上运行,并将您需要的任何代码放入该块中:
[[NSOperationQueue mainQueue] addOperationWithBlock:^
// Code here
NSLog(@"This is the main thread");
];
使用您的代码,会变成:
bar()
bar1();
[[NSOperationQueue mainQueue] addOperationWithBlock:^
[stopActivityIndidator];
[functionIWant];
];
【讨论】:
以上是关于在后台和主线程 ios 中执行的主要内容,如果未能解决你的问题,请参考以下文章