2014/03/02

[ios]Objective-Cではヘッダにクラス変数が書けないようだ

まだ理解不足もあるが、たぶんObjective-Cのヘッダにはクラス変数が書けないようだ。
やりたかったのは、C++でいえばこんな感じのこと。

--- ヘッダファイル ---
class TestA {
private:
  static bool mBoolVar;

public:
  static bool getBoolVar() { return mBoolVar; }
};


なんでそんなことがしたかったかというと、端末が4インチかどうかを持たせたいと思ったからだ。
毎回UIScreenを呼ぶほどでもないので、起動時に4インチかどうかの結果を保持して、あとは保持した情報だけ呼んだ方が早そうだ、と思ったのだ。
じゃあ@propertyでstrongとreadonlyを指定すればいいやん、と思ったのだが、strongはオブジェクトじゃ無いとダメだ、と怒られた。
それに、@propertyだとインスタンスを作らんといかんような気がしてきた。

じゃあ、ヘッダにクラス変数を書いて、inline関数にすればいいかな、と思ったのが今回の件だった。
Cで書いて、グローバル変数にしてexternとかでもよいのかもしれないが、あんまりやりたくないので、mファイルに書くやり方にしておこう。
普通のやり方にしておけば、コンパイラがうまいこと最適化してくれるかもしれない。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。