在iOS上进行异步调用的最佳性能是什么?

时间:2014-07-10 11:47:57

标签: ios multithreading performance grand-central-dispatch

如果在线程调用中存在性能问题并且我想优化它,我会在iOS上搜索异步调用的更好性能。

[self performSelector:@selector(switch) withObject:nil afterDelay:delay inModes:@[NSRunLoopCommonModes]];

有一个GCD调用,如:

dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); dispatch_after(delay, dispatch_get_main_queue(), ^(void){
[self switch];
});

表现更好?或者任何人都有想法?我猜一个计时器只会更胶水......

2 个答案:

答案 0 :(得分:2)

如果您的应用中存在性能问题,则不在此处。有两种可能性:

  1. 您正在进行大量此类调用,在这种情况下,调度机制的性能实际上是一个问题。在这种情况下,重做您的应用程序逻辑,这样您就不需要拨打这么多电话!

  2. 您没有拨打那么多电话,在这种情况下,与您的代码中的任何问题相比,调度的性能只是一个非问题。

  3. 为什么你认为这里有性能问题?

答案 1 :(得分:0)

mytimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(callAfteroneSecond) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:mytimer forMode:NSRunLoopCommonModes];

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