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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liu01230 中级黑马   /  2015-5-14 17:31  /  1509 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

oc中的SEL是什么东西,用在哪里呢?

8 个回复

倒序浏览
oc的sel是一种类型,可以通过方法名称找到方法
回复 使用道具 举报
SEL是ios提供一种选择方法的途径,这么说你可能有点晕。
一般是这样的,比如说你创建了一个数组,相对里面的每一个元素都调用一种方法,这时候就用到它了。
@selector(这里写你要对每个元素调用的方法名)
这里值得注意的是,方法如果需要传参数,方法名后面不要忘了加:
回复 使用道具 举报
一种数据类型,类中的所有方法都会封装成一个sel对象,调用方法时候,通过sel类型数据找到方法,你可以理解为sel放的是方法的地址
回复 使用道具 举报
学到知识了
回复 使用道具 举报
xiaofei93 发表于 2015-5-14 23:38
一种数据类型,类中的所有方法都会封装成一个sel对象,调用方法时候,通过sel类型数据找到方法,你可以理解 ...

知道了,谢谢了
回复 使用道具 举报
狂甩你十八条街 发表于 2015-5-14 18:10
SEL是ios提供一种选择方法的途径,这么说你可能有点晕。
一般是这样的,比如说你创建了一个数组,相对里面 ...

创建数组为什么是调用方法呢?
回复 使用道具 举报
SEL就是一种包装方式简而言之
回复 使用道具 举报
OC的编译器会将方法名,是方法名哦,带冒号的哦,编译成SEL类型的数据,也就是中源代码中的方法名编译后会变成SEL类型的数据,方法名相同的方法的SEL类型的数据都是一样的。运行时,运行时系统会根据会确定消息接受者的实际类型,然后在该对象的类对象中搜索消息名(方法名),这个时候是SEL类型的数据了哦,如果一个类中存在重载的方法,运行时系统 将乎出错,如果方法名相同 而返回值或参数类型不同,这个时候将会出现各种预料不到的错误。所以编译的时候如果有重载,编译器就会警告,运行时如果方法签名不一致 ,就会出错。over
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马