我是 iOS 开发线程的新手,我在这里有疑问,请考虑以下代码
[activityIndicator startAnimating];
[self startAnewOperationInSepThread];
[self startAnotherOperationInSepThread];
我的理解是当第一行执行时,活动指示器将在主线程中启动。所以现在主线程负责运行活动指示器。如何调用后续操作。
我是 iOS 开发线程的新手,我在这里有疑问,请考虑以下代码
[activityIndicator startAnimating];
[self startAnewOperationInSepThread];
[self startAnotherOperationInSepThread];
我的理解是当第一行执行时,活动指示器将在主线程中启动。所以现在主线程负责运行活动指示器。如何调用后续操作。
利用 performSelectorInBackground
[self performSelectorInBackground:@selector(yourmethod:) withObject:nil];
是的,你调用 [activityIndicator startAnimating]; 从主线程,这只是一个启动动画的调用。实际的动画是在一个单独的线程上完成的。
即使活动指示器仍然是动画,但这并不意味着您不能在主线程上做任何事情。因为他的职责(调用 startAnimating 方法)已经结束。
在activityIndicator上调用startAnimating后,跳转到下一行,执行[self myMethod1]; 然后 [self myMethod2]; 对于以下代码。
不要把它们复杂化,就是这么简单
[activityIndicator startAnimating];
[self myMethod1];
[self myMethod2];
你必须选择它
1.> 你可以在不同的线程上运行这两种方法 - 不同的线程喜欢它
[NSThread detachNewThreadSelector:@selector(startAnewOperationInSepThread) toTarget:self withObject:nil];
[NSThread detachNewThreadSelector:@selector(startAnotherOperationInSepThread) toTarget:self withObject:nil];
或者
2.>如果你想在一个线程完成后启动另一个线程,那么首先调用 startAnewOperationInSepThread 方法并在它的定义内调用 startAnotherOperationInSepThread 喜欢它
-(void)startAnotherOperationInSepThread
{
[self startAnotherOperationInSepThread];
}
如果您仍然面临任何问题,请告诉我。谢谢
否。执行第一行时,活动指示器不会启动。一旦主循环调用的主线程中的方法结束,它将立即启动。当您的方法在主线程中运行时,UI 不会发生任何变化。