With introduction of open keyword in Swift 3.0 (What is the 'open' keyword in Swift?).
Note: Limited to extensions on NSObject derived classes or @objc attributed method/properties.
Code which declared and used public (class) methods/properties in extension across modules/frameworks broke, as public is no longer means 'overridable' outside of defining module.
Example:
public extension UIManagedDocument {
    public class func primaryDocumentName() -> String {
        return "Document"
    }
    public class func primaryStoreURL() -> URL {
        let documentsURL = FileManager.default.userDocumentsURL
        return URL(fileURLWithPath: self.primaryDocumentName(), isDirectory: false, relativeTo: documentsURL)
    }
    public class func primaryModelName() -> String? {
        return "Model"
    }
}
- Original proposal (SE-0117) is focused on subclassing and doesn't mention extensions.
- Currently extensions do not support openkeyword (you can't writeopen extension NSObjectas well asopen func Method())
Question: Is there workaround to be able override extension provided methods/properties across modules/frameworks?
 
     
    