c函数内的_cmd值

wh1*_*t1k 17 cmd objective-c selector

_cmd当我从C风格的函数体中访问变量时,变量的值是多少?

它仅在选择器(Objective-C)方法中定义吗?

PS

这个问题可能源于我对什么不理解_cmd.如果有人为我提供了一个很好的解释来源,我将不胜感激.

小智 21

_cmd 函数的主要用途是获取调用它的方法名称.

_cmd与其他一些功能的用法如下所示.

NSLog(@"<%@:%@:%d>", NSStringFromClass([self class]), NSStringFromSelector(_cmd), __LINE__);
Run Code Online (Sandbox Code Playgroud)

您也可以使用PrettyFunction代替上线

NSLog(@"%s", __PRETTY_FUNCTION__); 
Run Code Online (Sandbox Code Playgroud)


Jas*_*oco 19

它仅适用于Objective-C方法,因此您无法访问它.传递给所有的Objective-C方法的前两个参数是self_cmd,那么无论其他参数的实际方法需要.由于既不传递self也不_cmd传递给常规C函数,因此无法访问它们.

两种变量都没有什么特别的魔力.

  • 更清楚的是,`_ cmd`是一个`SEL` - Objective-C方法的方法选择器."方法选择器是一个已经使用Objective-C运行时注册(或"映射")的C字符串." (7认同)
  • 供参考:[Objective-C方法](http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html).请注意,任何以"id"和"SEL"作为前两个参数的C函数都可以用作方法实现.类似地,任何方法实现都是一个C函数,它将`id`和`SEL`作为前两个参数. (3认同)