gpt4 book ai didi

ios - 可从 iOS 和 WatchKit Target 访问的单例框架 sharedInstance

转载 作者:可可西里 更新时间:2023-11-01 06:06:12 24 4
gpt4 key购买 nike

我制作了一个名为 SharedLocation 的 Swift 框架,其中包含一个 Swift 单例类“SharedLocationManager”,如下所示:

public class SharedLocationManager: CLLocationManager, CLLocationManagerDelegate
{
public class var sharedInstance: SharedLocationManager {
struct Static
{
static var onceToken : dispatch_once_t = 0
static var instance : SharedLocationManager? = nil
}
dispatch_once(&Static.onceToken)
{
Static.instance = SharedLocationManager()
}
return Static.instance!
}

public override init()
{
//do init stuff

}

此类的共享实例应该可以从我的 iOS 应用程序(用 Objective-C 编写)和我的 WatchKit 扩展(用 Swift 编写)访问。

我像这样在 iOS ViewController 中导入了框架:

 @import SharedLocation

在 Watch InterfaceController 中像这样:

import SharedLocation

我能够在两个目标中获得单例类的实例,但它们是不同的实例(init() 被调用了两次)。当我访问 WatchKit Target 内的 sharedInstance 时,一切正常,我每次都得到相同的实例。

甚至可以有一个包含多个目标的单例类吗?

最佳答案

不,不可能在您的扩展程序和应用程序之间共享单例的单个实例。你的 WatchKit 扩展和你的 iOS 应用程序在不同的进程中运行。如果您想在扩展程序和应用程序中访问该数据,则可以将数据保存到共享组文件夹。如果您想在您的扩展程序和应用程序之间进行通信,您还可以使用 MMWormhole 等框架。

关于ios - 可从 iOS 和 WatchKit Target 访问的单例框架 sharedInstance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29231266/

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