C 函数内的 _cmd 值

发布于 2024-10-07 01:00:09 字数 151 浏览 7 评论 0原文

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

它是否仅在 Objective-C 方法中定义?

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

What's the value of _cmd variable when I access it from C-style function's body?

Is it defined inside Objective-C methods only?

P.S. This question may originate from my non-understanding of what _cmd is. I would greatly appreciate if someone provided me with a good explanation source.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

笑看君怀她人 2024-10-14 01:00:09

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

下面写了 _cmd 与其他一些函数的使用。

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

除了上面的代码之外,你还可以使用 PrettyFunction

NSLog(@"%s", __PRETTY_FUNCTION__); 

The major use of the _cmd function is to get the method name in which it is called.

The use of the _cmd with some other functions has been written below.

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

Instead of above line you can also use PrettyFunction

NSLog(@"%s", __PRETTY_FUNCTION__); 
不必了 2024-10-14 01:00:09

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

这两个变量都没有什么特别神奇的地方。

It's for Objective-C methods only, so you can't access it. The first two parameters passed to all Objective-C methods are self and _cmd, then whatever other arguments the actual method takes. Since neither self nor _cmd are passed to regular C functions, you can't access them.

There's nothing particularly magic about either variable.

浅紫色的梦幻 2024-10-14 01:00:09

请查看此处了解更多说明。

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.

Please look here for further explanations.

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

imp:

A function which is the implementation of the new method. The function must take at least two arguments—self and _cmd.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文