2009-11-06 20 views
0

即時通訊嘗試使用UISwitch使用類別。 在我的卡諾克級:如何在類別中使用UISwitch?

@implementation UISwitch(Analytics) 

-(void) addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents{ 
[super addTarget:target action:action forControlEvents:controlEvents]; 
} 

這裏我有一個捕獲事件的問題。

回答

0

恐怕你不應該這樣做。從文檔:

雖然語言目前允許 您使用類別覆蓋 方法的類繼承,甚至 方法在類 接口中聲明,強烈 使用此 功能氣餒。

在用於爲什麼給定的理由是:

當類別覆蓋一個繼承 方法,在 類別中的方法可以像往常一樣,調用通過一個消息給超級繼承 實施。 但是,如果類別覆蓋 類別的類中已存在的 方法,則無法調用原始實現。

一個類別不能可靠地覆蓋在同一類的其他 類別聲明 方法。這個問題是 特別重要,因爲許多 可可類使用類別實施 。您嘗試覆蓋的框架定義的 方法本身可能已經在類別 中實現了 ,因此哪些實現需要 優先級未定義。

其中任何一個都可能與您的示例發揮作用。

如果您確實想要捕獲全部您的分析(而不是單個分析)的UISwitch行爲,最好使用UISwitch的自定義子類。如果您需要將其補丁到一個大型的現有項目中,並且希望在任何地方繼續使用UISwitch作爲類名,那麼您可以嘗試上課。但這可能是最後的手段,因爲這是一個相當笨拙的技術。

相關問題