[swift-users] Problem with Access Control and Extensions
Rick Aurbach
rlaurb at icloud.com
Wed Sep 20 14:41:17 CDT 2017
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20170920/abc53f5a/attachment.html>
More information about the swift-users
mailing list