在全局或仅在需要时声明对象更好吗

时间:2019-04-05 13:47:35

标签: swift oop

我有一些类,即User,Settings ...,我在大多数ViewController中都使用过。因为我经常使用它们,所以如果仅在全局范围内使用它们的一个实例,或者为每个类使用新的实例,会更好吗?

在AppDelegate中:

let user = User()

class AppDelegate: UIResponder, UIApplicationDelegate {
    ...

vs。

在每个班级:

class TimerViewController: UIViewController {

    private let user = User()

2 个答案:

答案 0 :(得分:3)

对于当前的状态来说,全局性更好

let user = User()

但是最好将其设为单例

class Service {
  static let shared = Service()
  let user = User()
}

因此,在阅读代码时不要混淆其他开发人员,将不会知道此全局变量是否为local / instance / global,因此成为单例将对此进行排序

答案 1 :(得分:1)

我的两分钱

总是最好在实际需要的地方声明它,而不是在全局声明它。优良作法是限制我们使用的变量的范围,以便在工作结束时将其释放并从内存中清除。在这里,很明显该实例只有一个所有者。

声明全局对象将导致维护实例属性的全局状态,并且由于它对所有类都是开放的,因此尚不清楚哪个类在改变什么,这里每个人都像是该实例的所有者。总是最好避免这种情况。