Я создал структуру Swift под названием SharedLocation с одноэлементным классом 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() вызывается дважды). Когда я получаю доступ к sharedInstance внутри WatchKit Target, все работает нормально, и я каждый раз получаю один и тот же экземпляр.
Возможно ли вообще иметь одноэлементный класс с несколькими целями?