プログラム(iOSアプリ)に3つのビューがあります。同時にアクティブになるのは1つだけなので、そのうちの2つを非表示にし、ユーザーがボタンを押すと表示を切り替えます。ビューは可視として初期化されているため、メインビューが表示される前にコードで可視性をオフに設定します。
できます
[view1 setAlpha:0.0f];
[view2 setAlpha:0.0f];
2つのビューの場合、現在は3番目のビュー(アプリの起動時に表示されるはずのビュー)には対応していません。私は
[view3 setAlpha:1.0f];
最初の2つが終わった後は、実際には3つのビューがあることは明らかだと思うので、コードを見るときに考えられるような2つではありません。他のプログラマはどのようにこれを行いますか?それは純粋に好みですか、それともいくつかの慣習がありますか?
呼び出しが非常に重い場合、それが必要でないときに呼び出さない方が明らかに良いですが、私の例のような小さなことについては疑問に思っていました。
あなたは不変です:
単一のビュー(3つのうち)のみがアクティブになります(そして表示されます)。
次に、すべてのビューのアクティビティと可視性を一度に切り替える機能を提供することをお勧めします。
[setActiveView viewID:2]
この関数は:
setVisibility
へのraw呼び出しについては、いくつかの利点があります。
setVisibility
の場合、値の範囲は0.0f - 1.0f
であり、1つだけを1.0f
に設定する必要があることを覚えるのは困難です。理想的には、不変条件を適用するために、他の関数がこの設定を台無しにしてはなりません...
代替案:3つのビューがあることを忘れ、2つだけで実際にすべてのビューで実行する必要があるため、バグの発生を防ぐことが目標である場合は、それを実行する関数を作成します不可能忘れる:
setViewVisibilities(0.0f, 0.0f, 1.0f)
これで、はるかに強力なものを手に入れました-コンパイル時間は、忘れていないことを保証します。パラメータを忘れた場合、コンパイラは怒鳴りつけます。これは、必要なプロパティを強制する厳密な名前付きプロトコルを作成するため、コメントや不要なコードよりもはるかに便利です。
view3
で表示を変更する必要がない場合は、-1.0
やnil
などの特別な値を渡すか、これらの行に沿って何かを「ビューの可視性をまったく変更しません。」これは、不必要に可視性を設定する問題を回避します。
通話が不要であることを説明するコメントを追加することをお勧めします(その理由も)。
(おそらく、呼び出しが不要である、またはそれに関するコメントが必要であるという事実は、コードのにおいかもしれません)
この特定のケースでは、@ Mattieu M.が適切なソリューションを持っています。
同様の変換がないより一般的なケースでは、次のことを自問する必要があります。将来のプログラマがこれを台無しにする可能性はanyありますか?
答えは通常はいです。つまり、はい、通話を追加する必要があります。フレームワークの将来のバージョンでは、すべてのビューがオンではなくオフで始まる可能性があります。