こんにちは。最近Swiftを勉強なのでメモ書きレベルで覚えたことや気付いたことについて少し書きたいと思います。
最近XCode8と共にswiftアクセス制御に変化がありました。
open、fileprivateが追加され、既存のpublicとprivateの意味も変わっています。
swift3の以前は、
- public:すべてのソースファイルからアクセス可能
- internal: 同じモジュール内でアクセス可能
- private: 同じフィアル内でアクセス可能
だったのが、swift3になって新しいものが追加され、従来あったものにも意味が少し変わっています。
open
同じモジュールまたは、モジュールをインポートした他のモジュールからアクセス可能。そして継承、オーバライドもできる。
public
openと同じく全てのモジュールからアクセス可能。しかし、継承とオーバーライドは同じモジュールのみ可能
internal
同じモジュールのみアクセス可能。(デフォルト)
fileprivate
同じソースファイル内部でアクセス可能
private
宣言したスコープのみアクセス可能
ちなみに、Objective-C クラスはopenでインポートされる。finalはアクセスキワードと一緒に使って継承、オーバライドを制限することができます。(openでは使えないらしいです。)
この投稿へのコメント