是否有人知道如何在目标C的运行时期间获取实例响应的所有选择器?
答案 0 :(得分:5)
回答here,#import < objc/runtime.h >
并使用class_copyMethodList()。
答案 1 :(得分:2)
一般来说,这是不可能的。 “实例响应的选择器”可能是无限集。例如,可以实现一个将罗马数字作为消息发送的类,并返回相应的整数值。如果您想知道在给定时间由类实现的精确的实例方法(这是一个不同的问题),您可以使用Objective-C runtime functions来获取类的实例方法列出并遍历类树以查找它从超类继承的那些。尽管如此,这些是完全不同的两件事。一个类可能有一个选择不响应的消息的方法,它可能会响应它没有直接相应方法的消息。
答案 2 :(得分:-1)
dapptrace
(Dtrace)是你的朋友。
man dapptrace
)上的:
dapptrace打印用户和的详细信息 库函数调用
dapptrace
是为Dtrace脚本语言(D
)编写的。这意味着您可以调整dapptrace或从其脚本文件中提取想法以执行许多操作。例如:
等待myFunctionWhichCreatesSpecialObject
被召唤。存储它返回的对象地址(特殊对象)。打印出在该对象上调用的任何选择器。
你也可以直接调用dtrace来编写简单的单行法术。我会让你去寻找那些。
答案 3 :(得分:-2)
在运行时,您将使用
类方法“+(BOOL)instancesRespondToSelector:(SEL)aSelector”
如果您知道要检查的选择器。