<span style="white-space:pre"> </span><span style="font-size:18px;">解决主线程柱塞问题时,我们可以使用多线程。 NSThread是Object-C中的多相处了类,但是麻烦的是我们需要管理线程,包括创建线程,线程间的通信和销毁线程等。下面的代码是在ConcurrencyTest工程中使用NSTread创建线程,然后执行100次处理:</span><pre name="code" class="objc">- (IBAction)testNSTread:(id)sender {
[NSTread detachNewThreadSelector:@selector(calculationThreadEntry) toTarget:self withObject:nil];
}
- (void)calculationThreadEntry
{
@autoreleasepool {
NSUInteger counter = 0;
while ([[NSThread currentThread] isCancelled] == NO)
{
[self doCalculation];
count++;
if(count >= 100){
break;
}
}
}
GCD是基于C语句级别的API,它提供了C函数。下面的代码是ConcurrencyTest工程中使用GCD创建管理线程,然后执行100次处理:
<span style="font-size:18px;"></span><pre name="code" class="objc">- (IBAction)testGCD:(id)sender {
dispatch
}
<span style="font-size:18px;"><span style="white-space:pre"> </span></span>