gpt4 book ai didi

ios - 使用 Xcode 进行模拟时,PerformFetchWithCompletionHandler 调用了两次

转载 作者:IT老高 更新时间:2023-10-28 11:37:50 24 4
gpt4 key购买 nike

在 Xcode 7.0.1 中,“模拟背景”获取命令导致 performFetchWithCompletionHandler 被触发两次。

这是 Xcode 调试错误吗,或者这可能发生在运行应用程序发布版本的设备上。

更新现在我们有了 Xcode 7.1.1 并且仍然调用了两次 performFetchWithCompletionHandler。由于我不确定这是否也“在野外”发生,所以如果我的 fetch 操作已经在运行,我会保持状态。

- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler {
if (self.performingFetch) {
return completionHandler(UIBackgroundFetchResultNoData);
}
self.performingFetch = YES;
...
self.performingFetch = NO;
}

最佳答案

我通过在 App Delegate 中声明一个静态 bool 值来解决这个问题,然后使用该 bool 值让后台获取执行一次

if (!runOnce)
{
[submission startSubmissionProcessWithCompletetionHandler:^(UIBackgroundFetchResult result){
NSDate *fetchStart = [NSDate date];

completionHandler(result);

NSDate *fetchEnd = [NSDate date];
NSTimeInterval timeElapsed = [fetchEnd timeIntervalSinceDate:fetchStart];
NSLog(@"Background Fetch Duration: %f seconds", timeElapsed);
}];
runOnce = YES;
}
else
{
completionHandler(UIBackgroundFetchResultNoData);
runOnce = NO;
}

关于ios - 使用 Xcode 进行模拟时,PerformFetchWithCompletionHandler 调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33105744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com