如何引用类类型来调用同一类中的构造函数或其他类函数



我有这段代码,我需要复制&粘贴到许多类(我知道…),我正试图找到一种方法,不为每个新类编辑类名。我也希望我可以重构代码,而不用过多地考虑重命名类函数和调用初始化器。有办法吗?

@objc class MyClass : NSObject, NSCopying {
    init() {}
    func copyWithZone(zone: NSZone) -> AnyObject {
       return MyClass()
    }
   class func myFunction() {}
   func myMethod() {
       MyClass.myFunction()
   }
}
编辑:

类是NSObject子类,所以在这种情况下使用泛型不起作用。

与其将类的超类设置为NSObject,不如将它们的超类设置为MyClass,您可以这样定义:

@objc class MyClass : NSObject, NSCopying {
    required override init() {
        super.init()
    }
    func copyWithZone(zone: NSZone) -> AnyObject {
        return self.dynamicType()
    }
    class func myFunction() {
        // ...
    }
    func myMethod() {
        self.dynamicType.myFunction()
    }
}

dynamicType是指实例的类。对于MyClass的实例,dynamicTypeMyClass。对于MyClass的子类,dynamicType将引用该子类。

关于required初始化器和dynamicType的解释,请看在Swift中使用子类实现NSCopying

最新更新