如何在类别中使用UISwitch?

时间:2009-11-06 11:19:22

标签: objective-c

我试图使用UISwitch使用类别。 在我的catogory课程中:

@implementation UISwitch(Analytics)

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

这里我有一个捕获事件的问题。

1 个答案:

答案 0 :(得分:0)

我担心你可能不应该这样做。来自文档:

  

虽然该语言目前允许   你要用一个类别来覆盖   类继承的方法,甚至是   在类中声明的方法   界面,你是强烈的   不鼓励使用它   功能。

原因之一是:

  

当某个类别覆盖继承的类别时   方法,类别中的方法   像往常一样,可以调用继承的   通过消息实现到超级。   但是,如果某个类别覆盖了   已经存在的方法   类别的类,没有办法   调用原始实现。

  

类别无法可靠地覆盖   在另一类别中声明的方法   同一类。这个问题是   因为许多人的特殊意义   Cocoa类已实现   使用类别。框架定义的   您尝试覆盖的方法本身可能   已经在一个类别中实施,   以及实施所需的   优先级未定义。

其中任何一个都可能与你的例子有关。

如果您确实想要为分析捕获所有 UISwitch行为(而不仅仅是单个行为),那么最好使用UISwitch的自定义子类。如果你需要将它修补到一个大的现有项目中,并希望在任何地方继续使用UISwitch作为类名,你可以尝试使用try class posing。但这可能是最后的手段,因为它是一种相当苛刻的技术。