Swiftでアクセス修飾子(internal, private, fileprivate, public, open)を設定する方法

Pocket

小さいプロジェクトやプログラミング入門の頃はあまり気にしなくても良いけど、慣れてきたり、大きいプロジェクトをやるときには意識をしておこう。

今回はSwiftで使う5つのアクセス修飾子について。

Swiftでアクセス修飾子(internal, private, fileprivate, public, open)を設定する

ちなみにfileprivateopen はSwift3.0から新しく加わったアクセス修飾子だよ。

internal

internalは使うことは多いけど実はあまり目にしないもの。

なぜならデフォルト(記述を省略した場合)の修飾子がinternalだからだよ。

つまり、上記2つは同じ意味だよ。

特に問題なければ上を使うよ。

private

クラスなどの宣言内のみからアクセスできるよ。

上記の書き方だと実用性はないけど、別ファイルからインスタンス化含め、アクセスができなくなるよ。

letを使うのもそうだけど、変更されたくないものに適切なアクセス修飾子を割り振るのが大事だよ。

たとえば

こんな感じでクラスプロパティにprivateを設定するとエラー(アクセス不可)になるよ。

もし、クラス内でも変更されたくないときはletを使うほうが良いし、なるべく厳しいアクセス修飾子(private > fileprivate > internal > public > open)で作っていくのが基本だよ。

Read onlyにしたい場合には以下も参考にしてみよう。

Swiftでreadonlyにする - private(set) - を使う方法
プロパティをいじってほしくなくて、読み取り専用(readonly)にしたいことはよくあるかと思う。そんなときに private(set) と...

fileprivate

さっきのクラスプロパティをprivate から fileprivate に変えると、エラーが消えるよ。

fileprivate はその名の通り、同一ファイル内からのみアクセスできるアクセス修飾子だよ。

public

別のターゲット内からでもアクセスできるようになるよ。

overrideは可能だけど、継承ができないよ。

open

publicのアクセス範囲に加え、継承もできるよ。

publicやopenは基本的にはFrameworkなんかに設定するアクセス権だよ。

どれを使うかは実際に業務などで使ってみるのが1番なので、だんだんと慣れていくのが良いかと思うよ。


おわりに

最近、 teratail が無料のわりに良くできてておすすめ。

ボクがリリースしたアプリも役に立ったらDLしてみてね -> iOSアプリ
スポンサーリンク
  • このエントリーをはてなブックマークに追加