我试图使用UISwitch使用类别。 在我的catogory课程中:
@implementation UISwitch(Analytics)
-(void) addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents{
[super addTarget:target action:action forControlEvents:controlEvents];
}
这里我有一个捕获事件的问题。
答案 0 :(得分:0)
我担心你可能不应该这样做。来自文档:
虽然该语言目前允许 你要用一个类别来覆盖 类继承的方法,甚至是 在类中声明的方法 界面,你是强烈的 不鼓励使用它 功能。
原因之一是:
当某个类别覆盖继承的类别时 方法,类别中的方法 像往常一样,可以调用继承的 通过消息实现到超级。 但是,如果某个类别覆盖了 已经存在的方法 类别的类,没有办法 调用原始实现。
和
类别无法可靠地覆盖 在另一类别中声明的方法 同一类。这个问题是 因为许多人的特殊意义 Cocoa类已实现 使用类别。框架定义的 您尝试覆盖的方法本身可能 已经在一个类别中实施, 以及实施所需的 优先级未定义。
其中任何一个都可能与你的例子有关。
如果您确实想要为分析捕获所有 UISwitch行为(而不仅仅是单个行为),那么最好使用UISwitch的自定义子类。如果你需要将它修补到一个大的现有项目中,并希望在任何地方继续使用UISwitch作为类名,你可以尝试使用try class posing。但这可能是最后的手段,因为它是一种相当苛刻的技术。