在循环中调用方法,直到它具有预期结果

时间:2014-11-26 20:16:03

标签: ios objective-c xcode

如果有新内容,应用程序每5分钟使用一种方法检查服务器。 如果有服务器返回" true",否则" false"

问题是如何调用该方法直到服务器返回" true" ?有新内容的那一刻将是一个休息时间,让时间来执行一些代码,然后再次调用该方法来搜索服务器上的新内容。

我试试:

dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);

dispatch_async(q, ^{

    self.isNotifOnServer = [NSString stringWithFormat:@"%@", [self searchNewNotifications]];

    while (![self.isNotifOnServer isEqualToString:@"true"])
    {
        self.isNotifOnServer = [NSString stringWithFormat:@"%@", [self searchNewNotifications]];

        if ([self.isNotifOnServer isEqualToString:@"true"])
        {
            break;
            // Another method to get the notification
        }
    }

    dispatch_async(dispatch_get_main_queue(), ^{

        NSLog(@"The first search for notifications return %@", self.isNotifOnServer);

    });

});

你能给我一些建议吗?谢谢

1 个答案:

答案 0 :(得分:0)

使用递归为此,定义一个将代码放入其中的方法,并创建一个执行选择器!

-(void)myMethod{
 self.isNotifOnServer = [NSString stringWithFormat:@"%@", [self searchNewNotifications]];
 [self performSelector:@selector(myMethod) withObject:nil afterDelay:10.0];  }

它会每10秒调用一次方法!

您只需要从viewDidLoad方法调用一次!

我希望这有帮助!