2011-10-26 3 views
0

私は、多数のinit...メソッド(UITableViewCell)を持つクラスを持っています。私の拡張機能には、色などのさまざまなセルのプロパティを調整する特別なプロパティがあります。プロパティへの変更を処理するための2つのオプションがありました。initメソッドのプロパティを監視するようにKVOを設定する

  1. オーバーライドプロパティのセッター、渡された値を格納し、色など
  2. オーバーライドすべてのINITを設定し、KVOは、セットアップにプライベートメソッド色などを呼び出し、プロパティに見て追加

アイテム#1を適用することが最も簡単であると思われるが、私は手動でリンゴのガイドラインに従って(関与保持し)セッターのコードを入れて対処しなければならないことを意味します。私はセッターボイラーの場所を追加する必要はありませんが、私はすべてのINITを上書きしなければならないので、より多くのコードを要してしまうため

アイテム#2は、当初素敵ですね。

他の選択肢はありますか?

答えて

2

designated initializer(s)を上書きするだけです。典型的には、ほとんどのクラスは一つだけ指定イニシャライザを有し、<NSCoding>に準拠クラスは、2つ(第二は、-initWithCoder:である)を有します。

あなたはINITでKVOを設定した場合、あなたは-deallocで登録を解除するために覚えているだろう、忘れないでください。彼らは離れて行くときにオブジェクトが自動的にKVOの登録を解除していない、とあなたは忘れてしまった場合、将来的に同じ番地に配置されることをどんなオブジェクトがリークしたKVOのオブザーバーを継承します。

+0

ありがとうございました。私はUITableViewCellクラスを少し掘り下げました.4つではなく1つのinitメソッドをオーバーライドするだけのようです。 – drekka

関連する問題