如何在运行时检查对象是否有某个特定的PUBLIC选择器?

时间:2015-04-27 14:20:40

标签: ios objective-c runtime respondstoselector

我需要找出某个特定对象是否有某个特定的选择器,如果我可以调用它。我需要在运行时检查它。我知道respondsToSelector:但不幸的是它也检查了类的受保护接口。

我需要检查选择器是否存在以及它是否公开。有没有办法可以做到?

1 个答案:

答案 0 :(得分:1)

在Objective-C中,没有公共,私有或受保护方法的概念。只有IDE可以合并这些概念,以便在开发时提供一些OOP,但在运行时一切都会进行,因此没有标准的方法来执行此操作。

你可以做的是子类化(或创建一个带有关联对象的类别)NSObject,使用公共方法选择器创建数组,其中每个下一个子类将其公共方法添加到此数组,并使用您自己的方法或swizzle respondsToSelector方法来检查在你的数组中匹配。