1

我是 iOS 开发线程的新手,我在这里有疑问,请考虑以下代码

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

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

4

4 回答 4

1

利用 performSelectorInBackground

[self performSelectorInBackground:@selector(yourmethod:) withObject:nil];
于 2013-05-04T06:07:43.453 回答
0

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

即使活动指示器仍然是动画,但这并不意味着您不能在主线程上做任何事情。因为他的职责(调用 startAnimating 方法)已经结束。

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

不要把它们复杂化,就是这么简单

   [activityIndicator startAnimating];
   [self myMethod1];
   [self myMethod2];
于 2013-05-04T06:18:45.203 回答
0

你必须选择它

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

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

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

或者

2.>如果你想在一个线程完成后启动另一个线程,那么首先调用 startAnewOperationInSepThread 方法并在它的定义内调用 startAnotherOperationInSepThread 喜欢它

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

如果您仍然面临任何问题,请告诉我。谢谢

于 2013-05-04T06:24:49.007 回答
0

否。执行第一行时,活动指示器不会启动。一旦主循环调用的主线程中的方法结束,它将立即启动。当您的方法在主线程中运行时,UI 不会发生任何变化。

于 2013-05-04T06:09:49.413 回答