没有任何内存问题 - 延迟后重复异步调用方法

without any memory issue- calling asynchronously a method repetedly after delay

如何异步调用特定方法 以高效的方式重复延迟,从而最小内存使用量 而不会影响应用程序性能。

我知道我们可以在 dispatch_async 中直接做到这一点,但不确定它是如何工作的,或者它是否是一种有效的方法。

如有任何建议或帮助,我们将不胜感激。

谢谢

您应该使用调度计时器。这是一个每 2 秒调用一个块的简单示例:

@interface AppDelegate ()
{
    dispatch_source_t timer;
}

@end

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
    NSTimeInterval delayInSeconds = 2.0;
    NSTimeInterval leeway = delayInSeconds * 0.1;
    dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC, leeway * NSEC_PER_SEC);
    dispatch_source_set_event_handler(timer, ^{
        NSLog(@"Timer called");
    });
    dispatch_resume(timer);
}

@end

至于内存占用,就看你调用的方法了。设置定时器本身所需的内存可以忽略不计。