iOS在一个线程中运行多个操作

时间:2013-05-04 05:55:43

标签: ios objective-c nsthread nsoperationqueue

我是iOS开发中的新手,我在这里有问题考虑以下代码

   [activityIndicator startAnimating];
   [self startAnewOperationInSepThread];
   [self startAnotherOperationInSepThread];

我的理解是,当执行第一行时,活动指示符将在主线程中启动。所以现在主线程负责运行活动指示器。如何调用后续操作。

4 个答案:

答案 0 :(得分:1)

使用performSelectorInBackground

[self performSelectorInBackground:@selector(yourmethod:) withObject:nil];

答案 1 :(得分:0)

没有。执行第一行时,不启动活动指示器。一旦主循环调用主线程中的方法结束,它就会启动。虽然您的方法在主线程中运行,但UI不会改变任何内容。

答案 2 :(得分:0)

是的,你打电话给[activityIndi​​cator startAnimating];从主线程,这只是一个启动动画的调用。实际的动画是在一个单独的线程上完成的。

即使活动指示仍然是动画,并不意味着你不能在主线程上做任何事情。因为他的职责(称为startAnimating方法)结束了。

在activityIndi​​cator上调用startAnimating后,它跳转到下一行并执行[self myMethod1];然后[self myMethod2];对于以下代码。

不要让它们变得复杂,就是这么简单

   [activityIndicator startAnimating];
   [self myMethod1];
   [self myMethod2];

答案 3 :(得分:0)

你必须选择它

1>你可以在不同的线程上运行这两种方法 - 比如它

 [NSThread detachNewThreadSelector:@selector(startAnewOperationInSepThread) toTarget:self withObject:nil];

 [NSThread detachNewThreadSelector:@selector(startAnotherOperationInSepThread) toTarget:self withObject:nil];

OR

2>如果你想要在线程完成后另一个将开始然后首先调用startAnewOperationInSepThread方法并在其内部定义调用startAnotherOperationInSepThread之类的

-(void)startAnotherOperationInSepThread
{
    [self startAnotherOperationInSepThread];
}

如果您仍然遇到任何问题,请告诉我。感谢