首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过每个应用程序的扩展创建单例实例?

通过每个应用程序的扩展创建单例实例?
EN

Stack Overflow用户
提问于 2016-02-24 01:13:39
回答 1查看 1.7K关注 0票数 1

苹果文档中,它说有些实例需要在每个应用程序中创建一次,比如HKHealthStore:

每个应用程序只需要一个HealthKit商店。这些都是长寿的物体。创建一次存储,并保留一个参考资料供以后使用。

做一些像安全下面这样方便的事情,还是有更好的方法?

代码语言:javascript
复制
public extension HKHealthStore {

    class var sharedInstance: HKHealthStore? {
        if !HKHealthStore.isHealthDataAvailable() {
            return nil
        }

        struct Singleton {
            static let instance = HKHealthStore()
        }

        return Singleton.instance
    }

}

这样,我就可以在不污染自定义管理器的情况下做到这一点:HKHealthStore.shareInstance?.requestAuthorizationToShareTypes

这样可以吗?还是有一种更好的架构方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-24 16:56:44

我会这样做:

代码语言:javascript
复制
class MyHealthStore:HKHealthStore {
    static let sharedInstance = MyHealthStore()
}

现在您可以使用MyHealthStore.sharedInstance,它将始终返回相同的存储。

您也可以在没有子类的情况下实现相同的目标:

代码语言:javascript
复制
class MyCustomClass:NSObject {
    static let sharedInstance = MyCustomClass()
    let healthStore = HKHealthStore()
}

现在你可以使用MyCustomClass.sharedInstance.healthStore

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

https://stackoverflow.com/questions/35591466

复制
相关文章

相似问题

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