在Objective C中,'self'是某个类的实例化。我怎样才能找出它是什么类的实例?我想要一个包含该类名称的NSString。我知道isKindOfClass但是只测试它是否是一个特定的类,我必须事先知道它的名字。如果我的应用程序中有20个类(或50个),我必须写出20个isKindOfClass语句来找出它是哪个类,并且我必须重写它们以在不同的应用程序中执行相同的测试。获得课程名称是否有更直接的方式?
另外,如何获取包含我在运行时所使用的方法名称的NSString?
我想在运行时调试方法中使用这些函数。
这个问题涉及Objective C和iOS。
答案 0 :(得分:11)
对于班级:
NSStringFromClass([self class]);
对于方法(假设您使用的是您感兴趣的方法):
NSStringFromSelector(_cmd);
旁注,_cmd
就像self
一样传递给Objective C中的每个方法,并且是您所使用方法的SEL(选择器)。
答案 1 :(得分:3)
另一种选择是:
NSLog(@"%s", __PRETTY_FUNCTION__);
很长但是一旦你使用它几次输入_ 标签就会自动完成__PRETTY_FUNCTION__
。
答案 2 :(得分:1)
您可以使用isMemberOfClass:
来判断给定对象是否是该特定类的实例。
您可以使用NSStringFromClass(self.class)
获取当前的班级名称
您可以使用NSStringFromSelector(_cmd)
获取当前方法名称(_cmd选择器是每个方法的隐藏参数)。