I am trying to write an extension to a UIKit class, but am running into a 
can’t-win situation:

The code I ‘want’ to write looks like:


public extension UISplitViewController {
        override public func viewDidLoad() {
                super.viewDidLoad()
                if UIDevice.current.userInterfaceIdiom == .pad {
                        preferredDisplayMode = .automatic
                } else {
                        preferredDisplayMode = .primaryOverlay
                }
        }
}

This generates the error message 
/Users/rlaurb/Projects/Cooks-Memory/Cooks-Memory/AppDelegate.swift:131:23: 
Overriding instance method must be as accessible as the declaration it overrides
/Users/rlaurb/Projects/Cooks-Memory/Cooks-Memory/AppDelegate.swift:131:23: 
Overridden declaration is here (UIKit.UIViewController)

But I can’t change the access control of the function to ‘open’, because I get 
the warning that the function can’t be “more” accessible than the extension.

And I can’t change the extension’s access to ‘open’ because apparently 
extensions can’t be open.

Now I don’t want to get into a debate about whether this code works — it’s just 
an experiment — but is it even possible to express this idea?? I.e., is it 
possible to express this idea without subclassing?

Cheers,

Rick Aurbach

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to