gpt4 book ai didi

ios - 维护 HKHealthStore 对象的最佳方法......单例?

转载 作者:行者123 更新时间:2023-11-28 14:54:27 26 4
gpt4 key购买 nike

我意识到单例并不总是首选,但是根据 Apple 文档,在使用 HealthKit 时“每个应用程序只需要一个 HealthKit 商店。这些是长期存在的对象。创建一次商店,并保留一个引用以供以后使用。 “

为了在每个应用程序 session 中保留 1 个 HKHealthStore(与在不同类中实例化多个 HKHealthStores 或尝试传递同一实例相反),在此处使用单例有什么缺点吗?

其次,为 iPhone 应用程序和 Watch Extension 提供一个单独的 Singleton 类是否更可取?或者都可以使用一个单例类?

import Foundation
import HealthKit

class HealthStoreSingleton {
class var sharedInstance: HealthStoreSingleton {
struct Singleton {
static let instance = HealthStoreSingleton()
}

return Singleton.instance
}

let healthStore = HKHealthStore()
}

最佳答案

我发现,如果您正在使用锚定更新查询,那么您应该意识到您的 HealthStore 被阻塞,直到您的 updateHandler 函数返回。因此,您不能使用 updateHandler 中的 HealthStore 单例。

您可以通过使用并发来解决此问题:在操作队列上排队操作,并在开始处理操作之前从 updateHandler 返回。

或者您可以创建第二个 HealthStore 实例,并从 updateHandler 内部使用它。我必须说我做了一些实验以了解它是否有效,但我并没有在现实生活中使用这个方案。所以我不知道性能影响。

关于您的第二个问题:应用程序和应用程序扩展在不同的进程中运行。无法在两者之间共享一个实例。每个人都必须有自己的 HKHealthStore 实例。

关于ios - 维护 HKHealthStore 对象的最佳方法......单例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49503344/

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