就像
一样@interface MyClass : NSObject
@end
@implementation MyClass
+ (void)helloWorld
{
printf("Hello world. The method being called is %s\n", __PRETTY_FUNCTION__);
}
@end
int main(int argc, char *argv[]) {
@autoreleasepool {
[MyClass helloWorld];
}
}
结果
Hello world. The method being called is +[MyClass helloWorld]
我想获得类名编译时间。
答案 0 :(得分:4)
在编译时没有标准的方法来获取类名。添加这种非标准行为可能并不困难,但需要向编译器添加自定义代码。寻找定义 FUNCTION 的位置可能是一个很好的起点。
在寻找特定类型的解决方案时(例如在这种情况下),通常最好先提及您要解决的问题,而不是定义所需解决方案的术语。
很多人评论替代解决方案的原因在于,一般来说,程序员都在提供解决方案,而不是提供所要求的解决方案。我们经常发现所要求的要么是不可能的,不切实际的,要么不可能完全符合要求(如果我们所做的只是提供所要求的,我们将浪费更多的时间而不是我们已经做过的事情) 。当存在这些条件之一时,我们通常只是通过稍微改变参数来寻找解决方案。因此,在这种情况下,虽然许多人意识到编译时间确定不可用,但许多人也可能认为没有理由认为运行时间确定不能满足需要。当然有一些因素可以明显地对此提出异议,例如运行时性能(除非在慢速CPU上运行,然后使用ObjC就会产生问题)或内存开销(同样需要注意),因此不太可能成为一个因素。 / p>