Swifyな皆さんこんにちは。private(set) var はよく使いますよね?
外部からreadOnlyにしたい時に便利です。例えばこんな感じ。
private(set) var data: Data
// クラス内からは set/get が可能, クラス外からは get のみ可能
CocoaPods にライブラリを公開する
最近 Podsに自作のライブラリをオープンソースで公開してるのですが、その場合プロパティは internal ではアクセスできず public にする必要があります。あれ、private(set) じゃダメじゃん。で、どうするんだっけ?調べてみました。
public private(set)
これでいけました。基本 public アクセスだけど、setはprivateですよって意味ですね。ちなみに private(set) public でも同じ。基本的なことかも知れませんが今まで知りませんでした。private(set) は internal private(set) の省略形と考えると理解できました。まああまり外部ライブラリとか作ることなかったので・・・1行で書けて便利なのでこれから積極的に使っていきます。