open is a new access level in Swift 3, introduced with the implementation
of
- SE-0117 Allow distinguishing between public access and public overridability
It is available with the Swift 3 snapshot from August 7, 2016,
and with Xcode 8 beta 6.
In short:
- An
openclass is accessible and subclassable outside of the
defining module. Anopenclass member is accessible and
overridable outside of the defining module. - A
publicclass is accessible but not subclassable outside of the
defining module. Apublicclass member is accessible but
not overridable outside of the defining module.
So open is what public used to be in previous
Swift releases and the access of public has been restricted.
Or, as Chris Lattner puts it in
SE-0177: Allow distinguishing between public access and public overridability:
“open” is now simply “more public than public”, providing a very simple and clean model.
In your example, open var hashValue is a property which is accessible and can be overridden in NSObject subclasses.
For more examples and details, have a look at SE-0117.