自作Framework内でのプライベートな変数の作り方【objc】

はじめに

Objective-cで、作ったFrameworkを使ってもらうけど、とある変数はreadonlyにしたい場合があります。ただ、単純に@propertyでreadonlyにしても、Framework内でもreadonlyになってしまって、値代入ができません。

そんな時どうするかを説明したいと思います。

手順

1.Frameworkの利用する側から見えるヘッダクラスには、getメソッドだけ記述します。

(今回はSampleData.hとしました)

2..mファイルにgetメソッドを実装します。 

ここまでだと、当然ですが変数を宣言していないのでエラーになります。 

3.「カテゴリ」を追加する。

これが今回重要なことなのですが、objcにはカテゴリとして、クラスに対して機能を追加できる仕組みがあります。 AAA+BBB.hみたいなやつです、たまに見ますよね。

SampleData+FrameworkPrivate.hという名前で、ヘッダファイルを一つ追加します、このヘッダはFrameworkを利用する側から 見えないようにします。

 これを2の.mファイルでimportします。

こうすることで、ヘッダを利用する側としては、1で作ったgetメソッドしか参照出来なくなります。 Framework内で利用する時は、1のヘッダではなく、3のSampleData+FrameworkPrivate.hをimportして使えばOKです。

最後に

ここまでやりたい人は限られてくると思いますが、調べても中々出てこなかったので書かせて頂きました。

●この記事を書いた人