A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

sel

© 1722413885 中级黑马   /  2014-4-21 16:18  /  1360 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

SEL s = @selector(test);中sel是什么,本质是什么,是内存地址吗?

3 个回复

倒序浏览
每个类的方法都存放在类的对象之中,而每个方法都有一个sel类型的数据与之相对应,可以根据sel数据找到与之对应的方法地址然后调用。可以理解 @selector()就是取类方法的编号,他的行为基本可以等同C语言的中函数指针而Object-C的类不能直接应用函数指针,这样只能做一个@selector语法来取.它的结果是一个sel类型。这个类型本质是类方法的函数地址。
回复 使用道具 举报
SEL是数据类型,就代表了方法,在内存中每一个方法都对应一个SEL数据,SEL对应方法的地址。
回复 使用道具 举报
SEL 类成员方法的指针
可以理解 @selector()就是取类方法的编号,他的行为基本可以等同C语言的中函数指针,只不过C语言中,可以把函数名直接赋给一个函数指针,而Object-C的类不能直接应用函数指针,这样只能做一个@selector语法来取.
它的结果是一个SEL类型。这个类型本质是类方法的编号(函数地址)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马