为保持HKHealthStore对象...单身最好的办法?

问题描述 投票:0回答:1

我知道单的同时使用HealthKit没有赠品首选,但每个苹果的文档“您只需要为每个应用的单一HealthKit店,这些都是长寿的对象。创建店里来,并保持供以后使用的参考。”

是否有任何缺点在这里使用一个单以坚持每个应用会话1个单HKHealthStore(而不是要么实例多个HKHealthStores在不同的班级,或试图绕过同一个实例)?

其次,那会是最好有两个iPhone应用程序和监视扩展独立的单例类?或者可以均使用一台单例类?

import Foundation
import HealthKit

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

        return Singleton.instance
    }

    let healthStore = HKHealthStore()
}
ios swift health-kit
1个回答
1
投票

我发现,如果你正在使用锚更新查询,那么你应该意识到,你的HealthStore被阻止,直到你updateHandler函数返回。所以你不能从你的updateHandler使用HealthStore单。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.