0

大家好,我有需要..请帮帮我。下面是我在我的应用程序中运行的线程,每 .30 延迟调用一次。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    notification = [[NSNotificationCenter alloc] init];
    notificationTimer = [NSTimer scheduledTimerWithTimeInterval:.30 target:self selector:@selector(notificationTimerFired:) userInfo:nil repeats:YES];
    [[NSRunLoop currentRunLoop] run];

});

我想要的是在方法“notificationTimerFired”中,我正在调用另一种方法,即每隔 5 秒调用一次。我该怎么做。我尝试添加以下代码,但第一次调用指定的延迟但后来它不断调用 dispatch_async 方法被调用。请回复我 我非常需要

 [NSTimer scheduledTimerWithTimeInterval:.30 target:self selector:@selector(notificationTimerFired:) userInfo:nil repeats:YES];
4

1 回答 1

0

伙计们,我找到了解决我的问题的方法,如下所示

//run only once for specified delay        
static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        notification = [[NSNotificationCenter alloc] init];
        notificationTimer = [NSTimer scheduledTimerWithTimeInterval:frequency*60
                                                             target:self
                                                           selector:@selector(repeateThreadForSpecificInterval:)
                                                           userInfo:nil
                                                            repeats:YES];
        // Do any other initialisation stuff here
    });

dispatch_once 是我正在寻找的关键。无论如何感谢您的回复..

于 2013-06-20T07:03:14.963 回答