[英]Create singleton instance via extension per app?
在Apple文檔中 ,它說每個實例(例如HKHealthStore)需要創建一次一些實例:
每個應用程序只需要一個HealthKit商店。 這些是長期存在的對象。 一次創建商店,並保留參考以供以后使用。
是在進行一些安全之類的便捷操作,還是有更好的方法?
public extension HKHealthStore {
class var sharedInstance: HKHealthStore? {
if !HKHealthStore.isHealthDataAvailable() {
return nil
}
struct Singleton {
static let instance = HKHealthStore()
}
return Singleton.instance
}
}
這樣,我可以做到這一點而不會污染自定義管理器: HKHealthStore.shareInstance?.requestAuthorizationToShareTypes
這樣可以嗎?還是有更好的架構方法?
我會這樣:
class MyHealthStore:HKHealthStore {
static let sharedInstance = MyHealthStore()
}
現在,您可以使用MyHealthStore.sharedInstance
,它將始終返回同一商店。
您也可以在沒有任何子類的情況下實現相同的目的:
class MyCustomClass:NSObject {
static let sharedInstance = MyCustomClass()
let healthStore = HKHealthStore()
}
現在您可以使用MyCustomClass.sharedInstance.healthStore
通過簡單的擴展,可以在應用程序中創建子類HKHealthStore
實例而不對其進行子類化(Apple不鼓勵)或創建虛擬類的更干凈,更快捷的方法:
extension HKHealthStore {
static let shared = HKHealthStore()
}
這樣您就可以簡單地..
HKHealthStore.shared.requestAuthorization(...)
HKHealthStore.shared.execute(query)
就是這樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.