2

問題

UIButton の複数のインスタンスが必要なカスタム UIView を作成しています。各ボタンのインスタンスを 1 つ作成し、タグを使用してどのボタンがどれであるかを識別することで、メモリ (およびコード) を節約したいと考えています。新しい「上」ボタンと「下」ボタンを作成することもできますが、これをもっと賢くできるかどうかを確認したいと思います。

私がセットアップした方法は3つです(ただし、任意の数で機能するはずです)UILabelsで、各ボタンの下または上にそれぞれ「上」ボタンと「下」ボタンがあります。また、各ボタンの CGPoint 位置のカウントを使用して、対応する UILabel と一致させています。

私がしていること

したがって、xCount をデフォルト値に設定し、最初のラベルを作成してから、ラベルとボタンをサブビューとして追加する前に、最初の「上」ボタンと「下」ボタンを作成しています。

次に、xCount を増やし、タグを変更し、各ラベルと両方のボタンのフレームを設定します。ただし、これにより、最初のボタンが1回だけ新しいフレームに移動します(予想どおり)。

私が試したこと:

使用するたびに(最初のラベルとボタンがサブビューに追加された後)、各ボタンをそれ自体のコピーに設定しようとしましたが、実行時にエラーが発生します。

button = [button copy];

これは問題ではなく、コードのフォーマットの問題ですが、問題に対するより賢明な洞察を探しています:)。

このプロジェクトは、自動参照カウントを使用しています。

前もって感謝します!

4

1 に答える 1

3

まず、記憶に関するあなたの懸念には根拠がありません。必要な数のボタンを作成するだけです。

次に、ボタン (または任意のビュー) のフレームを変更すると、ボタンが移動します。1 つのボタンを 2 か所に配置することはできません。

第 3 に、オブジェクトをコピーすると、最初から 2 つを作成するのと同じ量のメモリが使用されます。コピー用に新しいメモリを割り当てる必要があります。

第 4 に、UIButtons はに準拠してNSCopyingいないため、コピーできません。

第五に、記憶に関するあなたの懸念には根拠がありません。必要な数のボタンを作成するだけです。

于 2012-06-06T03:01:20.720 に答える