文档章节

Objective-C中的_cmd是什么意思?

Zifirery
 Zifirery
发布于 2017/02/22 22:32
字数 190
阅读 20
收藏 0

Objective-C的编译器在编译后会在每个方法中加两个隐藏的参数:

  • 一个是_cmd,当前方法的一个SEL指针。
  • 另一个就是用的比较多的self,指向当前对象的一个指针。

在Apple的官方介绍里看到轻描淡写的说了一句:“The _cmd variable is a hidden argument passed to every method that is the current selector”,其实说的就是_cmd在Objective-C的方法中表示当前方法的selector,正如同self表示当前方法调用的对象实例一样。

比如,我们要打印当前要调用的方法,可以这样来写:

- (void)viewDidLoad
{
	 [super viewDidLoad];

	 NSLog(@"Current method: %@ %@",[self class],NSStringFromSelector(_cmd));
}

输出结果如下:

TestingProject[570:11303] Current method: FirstViewController viewDidLoad

本文转载自:http://blog.csdn.net/zhouhuishine/article/details/6069976

共有 人打赏支持
Zifirery
粉丝 0
博文 30
码字总数 16974
作品 0
南京
iOS工程师
iOS Runtime详解之SEL,Class,id,IMP,_cmd,isa,method,Iva

SEL/objc_selector 透明的数据结构,可以理解为C String typedef struct objc_selector *SEL; 也就是说,SEL是指向一个C String的指针。 id/objc_object id - 指向一个类的实例对象 底层代码...

小春0618
2016/05/08
204
0
Objective-C 的动态提示和技巧

过去的几年中涌现了大量的Objective-C开发者。有些是从动态语言转过来的,比如Ruby或Python,有些是从强类型语言转过来的,如Java或C#,当然也有直接以Objective-C作为入门语言的。也就是说有...

拉偶有所依
2015/01/05
169
2
Objective-C runtime简单应用

过去的几年中涌现了大量的Objective-C开发者。有些是从动态语言转过来的,比如Ruby或Python,有些是从强类型语言转过来的,如Java或C#,当然也有直接以Objective-C作为入门语言的。也就是说有...

田广ly
2015/12/28
17
0
Linux小函数问题

求大佬解释一下cpu-exec函数的每一步意思,另外一个问题是在cmd-c()函数中调用时传入参数-1,请问这是什么意思?

LTang
2017/02/21
73
0
Monkey for GitHub 0.9.1 发布,GitHub 排名 App

Monkey for GitHub 0.9.1 发布,这是第二个版本更新,这次主要增加了登录GitHub的功能,随手follow和star,并且增加发现模块,包括GitHub的trending,动态,showcases等。 Monkey 是一个 Gi...

flyicarus
2015/08/28
3.3K
5

没有更多内容

加载失败,请刷新页面

加载更多

Maven 项目中依赖的搜索顺序

ettings_mirror 的优先级高于 central settings_profile_repo 优先级高于 settings_mirror settings_profile_repo 优先级高于 pom_repositories settings_profile_repo 优先级高于 pom_prof......

xingyu4j
28分钟前
2
0
改变maven项目的名称

pom.xml <groupId>com.soft.xxx</groupId><artifactId>xxx</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>xxx Maven Webapp</name><build>......

1713716445
30分钟前
2
0
windows下按照RabbitMQ

rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平...

zhaochaochao
30分钟前
2
0
10个PHP比特币开源项目

如果你是一个Phper,如果你希望学习区块链,那么本文列出的10个开源的Php比特币项目,将有助于你了解在自己的应用中如何加入对比特币的支持。 如果你希望快速掌握使用Php对接比特币钱包的方法...

笔阁
37分钟前
23
0
MyBatis级联探讨

数据模型 <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper name......

职业搬砖20年
41分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部