我在 iOS 应用程序中使用 Swift 3 和 ARC,我想手动保留一个对象。
我试过 object.retain() 但 Xcode 说它在 ARC 模式下不可用。有没有另一种方法可以做到这一点,告诉 Xcode 我知道我在做什么?
长版:
我有一个 LocationTracker 类,它将自己注册为 CLLocationManager 的委托。当用户的位置发生变化时,它会更新一个名为 location 的静态变量。我的代码中需要位置的其他部分可以访问此静态变量,而无需或不需要对 LocationTracker 实例的引用。
这种设计的问题是没有保留委托,因此在 CLLocationManager 向其发送消息时,LocationTracker 已被释放,从而导致崩溃。
我想在将 LocationTracker 设置为委托之前手动增加它的引用计数。无论如何,该对象永远不会被释放,因为只要应用程序正在运行,就应该监视该位置。
我找到了一种解决方法,即拥有一个静态变量“实例”来保持对 LocationTracker 的引用。我认为这种设计不优雅,因为我永远不会使用“实例”变量。我可以摆脱它并显式增加引用计数吗?
正如声称的那样,这个问题不是重复的,因为另一个问题是关于 Objective-C 的,而这个问题是关于 Swift 的。