让 __PRETTY_FUNCTION__ 只打印选择器的第一部分?
有没有办法使 __PRETTY_FUNCTION__ 宏仅解析为 ObjC 选择器的第一部分?
-(void)arg1:(int)a1 arg2:(int)a2 arg3:(int)a3 {
printf("%s\n",__PRETTY_FUNCTION__);
/* Prints 'arg1:arg2:arg3'
I want it to print 'arg1'
*/
}
Is there a way to make the __PRETTY_FUNCTION__
macro only resolve to the first part of an ObjC selector?
-(void)arg1:(int)a1 arg2:(int)a2 arg3:(int)a3 {
printf("%s\n",__PRETTY_FUNCTION__);
/* Prints 'arg1:arg2:arg3'
I want it to print 'arg1'
*/
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
然后您应该使用以下内容编辑该字符串:
然后您可以用它制作一个宏以便于使用(使用
_cmd
给出更好的结果,如 Ole)Then you should edit that string by using something like:
You could then make a macro out of it for easy usage (using
_cmd
gives better results, as noted by Ole)不会。但是您可以轻松编写自己的宏,该宏采用
_cmd
(传递给每个方法的两个隐藏参数之一),使用NSStringFromSelector()
将其转换为字符串,然后解析字符串以删除它找到的第一个冒号之后的所有内容(包括它找到的第一个冒号)。No. But you could easily write your own macro that takes
_cmd
(one of the two hidden arguments passed to each method), converts it to a string withNSStringFromSelector()
and parses the string to remove everything after and including the first colon it finds.