ios - 无法在 IOS 中多次执行 X 分钟的函数调用

标签 ios iphone objective-c ios7 nsthread

我试图创建每分钟调用一次的函数(没有计时器)。
当我运行该应用程序时,它会在一分钟后执行,然后再也不会执行。
我可能错过了什么,但找不到什么?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSDate *date = [NSDate date];
    NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSSecondCalendarUnit fromDate:date];

    NSTimeInterval timeSinceLastSecond = date.timeIntervalSince1970 - floor(date.timeIntervalSince1970);
    NSTimeInterval timeToNextMinute = (60 - dateComponents.second) - timeSinceLastSecond;

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(timeToNextMinute * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        [self myFunction];

    });

    return YES;
}

最佳答案

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 {
    [self executeEveryOneMinute];
    return YES:
 }

 - (void)executeEveryOneMinute
 {
    [self myFunction]
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(60 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

        [self executeEveryOneMinute];

    });
 }

关于ios - 无法在 IOS 中多次执行 X 分钟的函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24179123/

相关文章:

ios - 在 for-in 循环中更改数组的名称

iOS map GPS 位置在 map 上实现蓝球定位和箭头标志

ios - 在使用 google 登录和 facebook 登录我的 ios 应用程序时 - 如何将两种 viewDidLoad() 方法的代码合并为一个?

ios - UITextField 应该只接受数字值

iphone - 一些 xcode 项目中的 xx.bundle 目录

iphone - UIApplication 的 openURL 使我的应用程序崩溃

iphone - 如何在 UINavigationController 中正确继承 UITableViewController?

ios - 核心数据不一致 - 获取有时不返回任何内容

ios - 如何获得具有相同屏幕宽度的 WebView ?

ios - Objective c 初始值设定项的歧义