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

标签 ios objective-c runtime respondstoselector

我需要找出某个特定对象是否有某个特定选择器以及我是否可以调用它。我需要在运行时检查它。我知道 respondsToSelector: 但不幸的是它还检查类的 protected 接口(interface)。

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

最佳答案

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

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

关于ios - 如何在运行时检查对象是否具有某些特定的 PUBLIC 选择器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29898350/

相关文章:

ios - 如果文本为空,UITableViewCell detailTextLabel 不支持 KVO?苹果漏洞?

ios - 从 WebView 获取 URL 以在 Safari 中打开

ios - 以编程方式向 UITabBarController 添加/删除选项卡会发出控制台警告

java - 计算程序运行时间?

c++ - 使用 Unix 程序时间计算每次迭代的程序运行时间

iphone - 从核心数据存储创建 .sqlite 文件?

iphone - EXC_BAD_ACCESS 错误,内存管理问题

iphone - writeToFile路径?

ios - 应用内购买还原查询

javascript - 基于 web 的 javascript 游戏中的资源文件