iVe*_*tis 5 singleton instance targets ios watchkit
我创建了一个名为 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
}
Run Code Online (Sandbox Code Playgroud)
此类的共享实例应该可以从我的 iOS 应用程序(用 Objective-C 编写)和我的 WatchKit 扩展(用 Swift 编写)访问。
我在 iOS ViewController 中导入了框架,如下所示:
@import SharedLocation
Run Code Online (Sandbox Code Playgroud)
在 Watch InterfaceController 中,如下所示:
import SharedLocation
Run Code Online (Sandbox Code Playgroud)
我能够在两个目标中获得单例类的实例,但这些是不同的实例(init() 被调用两次)。当我访问 WatchKit Target 中的 sharedInstance 时,一切正常,并且每次都得到相同的实例。
甚至有可能有一个具有多个目标的单例类吗?
不,不可能在您的扩展程序和应用程序之间共享单例的单个实例。您的 WatchKit 扩展和 iOS 应用程序在不同的进程中运行。如果您想在扩展程序和应用程序中访问该数据,您可以将数据保存到共享组文件夹。如果您想在扩展程序和应用程序之间进行通信,您还可以使用 MMWormhole 等框架。
| 归档时间: |
|
| 查看次数: |
1695 次 |
| 最近记录: |