我正在尝试创建一个类方法,它可以选择返回该类的一个(已实例化的)实例。
我正在考虑将实例化类的内存地址写入用户默认键,然后尝试返回该地址处的对象,但我不确定这是否是正确的方法,也不确定如何实现。

class MyClass {

    let myProperty: String

    required init(myProperty: String) {
        self.myProperty = myProperty
    }

    class func currentClass() -> MyClass? {
        return nil
    }
}

let aNewClass = MyClass(myProperty: "Hi")

// Should return the aNewClass instance:
MyClass.currentClass()

最佳答案

您需要创建一个静态属性,将已创建的成员分配给:

class MyClass {
    let myProperty: String
    private static var instance : MyClass?

    required init(myProperty: String) {

        self.myProperty = myProperty

        if MyClass.instance == nil {
            MyClass.instance = self
        }
    }

    class func currentClass() -> MyClass? {
        return MyClass.instance
    }
}

let aNewClass = MyClass(myProperty: "Hi")

这与单例模式有点类似,您总是可以从类中检索相同的对象。您也可以删除赋值周围的if,如果这样更适合您的需要,则类始终返回最新的实例。

关于swift - 从类方法中查找类的实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34664835/

10-14 21:08
查看更多