グローバル変数を使用する必要があるのはいつですか、クラス変数を使用するのはいつですか?その理由は何ですか?
このプラットフォームの初心者である私たちとあなたの経験とアイデアを共有することを願っています。
例:
レイヤー上のタッチイベント(タッチ開始、終了など)のタイムスタンプと位置をトレースする必要があります。タッチイベントを実装するクラスのグローバル変数またはクラス変数を使用してトレースできます。私は何をすべきか?
よろしく、
-サダト
グローバル変数を使用する必要があるのはいつですか、クラス変数を使用するのはいつですか?その理由は何ですか?
このプラットフォームの初心者である私たちとあなたの経験とアイデアを共有することを願っています。
例:
レイヤー上のタッチイベント(タッチ開始、終了など)のタイムスタンプと位置をトレースする必要があります。タッチイベントを実装するクラスのグローバル変数またはクラス変数を使用してトレースできます。私は何をすべきか?
よろしく、
-サダト
これは、ObjectiveCまたはiPadファミリのデバイスに固有の問題ではありません。
変数には、必要最小限の「可視性」と「期間」が必要であり、それ以上は必要ありません。
コードレビュープロセスを通じてグローバル変数を取得しようとする非常に説得力のある理由を考え出す必要があります。ほとんどの場合、もう少し適切なものに置き換えることができます。
あなたのコメントに応えて:
グローバル/クラス変数がメモリにどのように影響するかわかりません。
クラスレベルの変数を実行する方法を詳しく説明したスニペットがここにあります。これらは通常のCファイルスコープ変数であるため、ファイルの外部には表示されませんが、インスタンス化するすべてのオブジェクトに対して1つではなく、クラスに対して1つだけ取得します。
その意味で、それらには、欠点(グローバル名前空間を汚染し、クラス外のコードがそれを変更できるようにする)なしで、グローバル(最小限のストレージと値に引き続き読み取り可能)の利点があります。
また、ファイルの外部で読み取る必要がない場合は、initCount
メソッドを提供しないでください。
これは一種の逆の答えですが、グローバル変数はまったく使用しないでください。クラスメソッドと予想されるカプセル化に固執してください。それ以外の場合は、夕暮れから夜明けまでカカオライブラリと戦うことになります。クラスメソッド、カプセル化、委任などを含むそれらのパターンに従うと、比較的少ない労力で大きな前進を遂げることになります。
私の努力の中で何かを「グローバル変数」と呼ぶことができる唯一の場所はプロジェクト全体の定数です-したがって変数ではありませんが、プロジェクト全体で定数が必要な場合があります(TableViewCell識別子が思い浮かびます)