OC---- selector 选择器

SEL 全称叫 selector 选择器, 是一个数据类型(其实是一个类), 所以要在内存中申请空间存储数据

3.1 类是以Class对象的形式存储在代码段之中.
     类名:存储的这个类的类名. NSString
     
3.2 还要将方法存储在类对象之中.如何将方法存储在类对象之中.
     1). 先创建1个SEL对象.
     2). 将方法的信息存储在这个SEL对象之中.
     3). 再将这个SEL对象作为类对象的属性.
     
     
3.3 拿到存储方法的SEL对象.
     1. 因为SEL是1个typedef类型的 在自定义的时候已经加*了.所以 我们在声明SEL指针的时候 不需要加*
     2. 取到存储方法的SEL对象,
     SEL s1 = @selector(方法名);
 
 
3.4 调用方法的本质.
     内部的原理:  如: [p1 say];
     1. 先拿到存储say方法的SEL对象,也就是拿到存储say方法的SEL数据. SEL消息.
     2. 将这个SEL消息发送给p1对象.
     3. 这个时候,p1对象接收到这个SEL消息以后 就知道要调用方法
     4. 根据对象的isa指针找到存储类的类对象.
     5. 找到这个类对象以后 在这个类对象中去搜寻是否有和传入的SEL数据相匹配的.
     如果有 就执行  如果没有再找父类 直到NSObject
     
     
3.5 OC最重要的1个机制:消息机制.
     调用方法的本质其实就是为对象发送SEL消息.
     [p1 say]; 为p1对象发送1条say消息.
 
3.6 重点掌握:
     1) 方法是以SEL对象的形式存储起来.
     2) 如何拿到存储方法的SEL对象.
 
3.7 手动的为对象发送SEL消息.
     1) 先得到方法的SEL数据. 将这个SEL消息发送给p1对象.
     2) 调用对象的方法 将SEL数据发送给对象. - (id)performSelector:(SEL)aSelector;
         如:两种调用1个对象
         Person *p1 = [Person new];
         [p1 say]
 
         SEL s1 = @selector(say);
         [p1 performSelector:s1] == [p1 say]效果是完全一样的.
 
     3) 调用1个对象的方法有两种.
         第一种:[对象名 方法名]
         第二种:手动的为对象发送SEL消息.
 
 
3.8 注意:
     1). 如果方法有参数 那么方法名是带了冒号的.
     2). 如果方法有参数,如何传递参数.
     那么就调用另外1个方法.一般小于2个参数
     - (id)performSelector:(SEL)aSelector withObject:(id)object;
     - (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;
 
3.9 如果有多个参数(大于3个):封装为一个对象就可以了
 
 
3.10 关于SEL 只要知道:
     1) 类是以Class对象的形式存储在代码段.
     2) 如何取到存储类的类对象.
     3) 如何使用类对象调用类的类方法
     4) 方法是以SEL数据的形式存储的.
     5) 调用方法的两种方式.
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值