我想知道超类是否实现了我的子类也实现的A方法,以便我可以在我的子类中安全调用[super A]而不会抛出异常。NSObject的respondsToSelector:在这种情况下不起作用,因为它总是返回true(因为我的子类实现了该方法)。有什么想法吗?
instancesRespondToSelector:
来完成此操作。因此,你可以从子类中调用[[self superclass] instancesRespondToSelector:@selector(...)]
来确定父类是否实现了你需要的方法。[[self superclass] instancesRespondToSelector:@selector(...)]
不会起作用,如果实现它的类被子类化,并且该方法在子类化的类的实例上调用。
一个解决方案是明确指定实现它的当前类的名称:[[ExplicitClassName superclass] instancesRespondToSelector:@selector(...)]
尝试 [[[self class] superclass] instancesRespondToSelector:@selector(. )]]]
[super respondsToSelector:] 调用超类的 respondsToSelector 实现,这很可能与当前类的相同。它不会检查超类是否实现了该方法。