首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >维护HKHealthStore object...Singleton的最佳方法?

维护HKHealthStore object...Singleton的最佳方法?
EN

Stack Overflow用户
提问于 2018-03-27 02:09:17
回答 1查看 567关注 0票数 1

我意识到单例并不是最受欢迎的,不过在使用HealthKit时,每个苹果文档都有“每个应用程序只需要一个HealthKit商店,这些都是长期存在的对象。创建一次存储,并保留一个参考资料供以后使用。”

在这里使用单例以使每个应用程序会话保持一个HKHealthStore (与在不同类中实例化多个HKHealthStores或试图传递同一个实例)相比有什么缺点吗?

第二,iPhone应用程序和手表扩展程序都需要一个单独的Singleton类吗?或者两者都可以使用单一的Singleton类?

代码语言:javascript
复制
import Foundation
import HealthKit

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

        return Singleton.instance
    }

    let healthStore = HKHealthStore()
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-07 10:57:21

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

您可以通过对操作队列使用concurreny: queue操作来解决这一问题,并在开始处理操作之前从updateHandler返回。

或者您可以创建第二个HealthStore实例,并在updateHandler内部使用该实例。我必须说,我做了一些实验,以了解它的工作,但我没有使用这个方案在现实生活的情况下。所以我不知道表演的影响。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49503344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档