我喜歡在異構UITableView as suggested by Matt Gallagher中抽象CellControllers的想法。然而,在典型的推詳細視圖行爲的情況下,我發現自己創造,只有詳細視圖控制器的init
方法不同的LinkRowCellController
幾乎相同的變種 - init:
,initWithBook:
,initWithMagazine:
,initWithHelpURLString:andTopic:
等如何統一處理僅通過初始化屬性不同的類對象?
好像我可以改變指定初始化採取屬性鍵和初始參數的字典,並有LinkRowCellController
initWithProperties:
方法設置使用上通過了對setValueForKey:
屬性。
這種解決方案似乎給了編譯時間檢查init
的論點。 Objective-C中針對其他均勻代碼中異構inits的最佳實踐是什麼?
UPDATE:
基於jlehr的回答下面我實現與initWithDictionary:(NSDictionary *)dict
,一切都繼承了單一的方法從超:
- (id)initWithDictionary:(NSDictionary *)dict
{
if ((self = [super init]) != nil)
{
for (id key in dict) {
[self setValue:[dict objectForKey:key] forKey:key];
}
}
return self;
}
它看起來很乾淨。我已經開始討論一個不同的粘性問題集,但是當我回來時讓我試試這個。 – iPhoneDollaraire 2010-03-06 02:26:37
我試了一下,它像一個冠軍! (太多了,以至於我很驚訝這不是NSObject的標準方法?) 我正在使用它來設置運行時的值,因此我不確定plist方法是否可以幫助我這次。 – iPhoneDollaraire 2010-03-07 22:03:01