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

How to check if object has some particular PUBLIC selector at runtime?

我需要查明某个特定对象是否有某个特定选择器以及我是否可以调用它。我需要在运行时检查它。我知道 respondsToSelector: 但不幸的是它还检查 class 的受保护接口。

我需要检查选择器是否存在以及它是否 public。有什么办法可以做到吗?

在Objective-C中没有public、私有或受保护方法的概念。只有 IDE 可以在开发时合并这些概念以提供一些 OOP,但在运行时一切正常,因此没有标准的方法来做到这一点。

你可以做的是子类化(或创建一个包含关联对象的类别)NSObject,使用 public 方法选择器创建数组,其中每个下一个子类都将其 public 方法添加到该数组中,或者使用您自己的方法或 swizzle respondsToSelector 方法检查数组中的匹配项。