2011-10-26 32 views
0

我有一個包含大量init...方法(UITableViewCell)的類。我的擴展有一個額外的屬性,當設置時,將調整各種單元屬性,如顏色。我有兩個選擇來處理財產的變化。設置KVO來觀察init方法中的屬性

  1. 覆蓋屬性setter,存儲與傳遞的值,然後設置顏色等
  2. 覆蓋所有inits並添加志願觀看,調用設置一個私有方法的顏色等屬性

項目#1似乎是最簡單的應用,但意味着我必須根據蘋果指南手動輸入setter代碼(保留參與)。

項目#2聽起來不錯,因爲我不必添加setter鍋爐的地方,但會花費更多的代碼,因爲我將不得不重寫所有inits。

有沒有其他的選擇?

回答

2

您只需覆蓋designated initializer(s)。通常,大多數類只有一個指定的初始化器,並且符合<NSCoding>的類有兩個(第二個是-initWithCoder:)。

不要忘記,如果您在init中設置KVO,則必須記住在-dealloc中取消註冊。當KVO消失時,對象不會自動註銷KVO,如果您忘記了,則將來在同一地址分配的任何對象都將繼承泄露的KVO觀察者。

+0

謝謝。我挖了一點回到UITableViewCell類,它看起來像我只需要重寫一個init方法而不是四個。 – drekka