c函数内的_cmd值

时间:2010-12-11 18:27:42

标签: objective-c cmd selector

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

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

P.S。

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

3 个答案:

答案 0 :(得分:21)

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

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

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

您也可以使用PrettyFunction

代替上线
NSLog(@"%s", __PRETTY_FUNCTION__); 

答案 1 :(得分:19)

仅适用于Objective-C方法,因此您无法访问它。传递给所有Objective-C方法的前两个参数是self_cmd,然后是实际方法所采用的其他参数。由于self_cmd都不会传递给常规C函数,因此无法访问它们。

这两个变量没有什么特别的魔力。

答案 2 :(得分:0)

请查看here以获取进一步说明。

func class_addMethod(_ cls: AnyClass!, 
                   _ name: Selector!, 
                   _ imp: IMP!, 
                   _ types: UnsafePointer<Int8>!) -> Bool

<强>小鬼

A function which is the implementation of the new method. The function must take at least two arguments—self and _cmd.