Swift 'open' keyword & overridable method/properties in extension?

后端 未结 2 600
伪装坚强ぢ
伪装坚强ぢ 2021-02-08 05:57

With introduction of open keyword in Swift 3.0 (What is the \'open\' keyword in Swift?).

Note: Limited to extensions on NSObject derived classes

2条回答
  •  猫巷女王i
    2021-02-08 06:35

    Unless I am mistaken, you can declare the extension methods as open in your framework if you just omit the public keyword in the extension declaration:

    extension UIManagedDocument {
    
        open class func primaryDocumentName() -> String {
            return "Document"
        }
        // ...
    }
    

    And then (for NSObject subclasses or @objc members) you can override the method in your custom subclass in the main application (or in any module):

    class MyManagedDocument: UIManagedDocument {
    
        override class func primaryDocumentName() -> String {
            return "MyDocument"
        }
        // ...
    }
    

提交回复
热议问题