如何以有效的方式反复调用特定方法异步 延迟,以便最小内存使用量而不会影响应用性能。
我知道我们可以直接在dispatch_async
中做到这一点但不确定它是如何工作的,因此它是一种有效的方法。
任何建议或帮助将不胜感激。
由于
答案 0 :(得分:1)
您应该使用调度计时器。这是一个每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
至于内存使用情况,这取决于您调用的方法。设置定时器本身所需的内存可以忽略不计。