07-15、SEL类型对象的使用

Snip20170922_32.png
Snip20170922_33.png
SEL类型对象的使用场景及作用

1.SEL类型的第一个作用, 配合对象/类来检查对象/类中有没有实现某一个方法
2.SEL类型的第二个作用, 配合对象/类来调用某一个SEL方法
3.配合对象将SEL类型作为方法的形参

#import <Foundation/Foundation.h>
#import "Person.h"
#import "Car.h"

int main(int argc, const char * argv[]) {

// 1.SEL类型的第一个作用, 配合对象/类来检查对象/类中有没有实现某一个方法
/*
SEL sel = @selector(setAge:);
Person *p = [Person new];
// 判断p对象中有没有实现-号开头的setAge:方法
// 如果P对象实现了setAge:方法那么就会返回YES
// 如果P对象没有实现setAge:方法那么就会返回NO
BOOL flag = [p respondsToSelector:sel];
NSLog(@"flag = %i", flag);

// respondsToSelector注意点: 如果是通过一个对象来调用该方法那么会判断该对象有没有实现-号开头的方法
// 如果是通过类来调用该方法, 那么会判断该类有没有实现+号开头的方法
SEL sel1 = @selector(test);
flag = [p respondsToSelector:sel1];
NSLog(@"flag = %i", flag);

flag = [Person respondsToSelector:sel1];
NSLog(@"flag = %i", flag);
 */


// 2.SEL类型的第二个作用, 配合对象/类来调用某一个SEL方法
/*
SEL sel = @selector(demo);
Person *p = [Person new];
// 调用p对象中sel类型对应的方法
[p performSelector:sel];

SEL sel1 = @selector(signalWithNumber:);
// withObject: 需要传递的参数
// 注意: 如果通过performSelector调用有参数的方法, 那么参数必须是对象类型,
// 也就是说方法的形参必须接受的是一个对象, 因为withObject只能传递一个对象
[p performSelector:sel1 withObject:@"13838383438"];

SEL sel2 = @selector(setAge:);
[p performSelector:sel2 withObject:@(5)];
NSLog(@"age = %i", p.age);

// 注意:performSelector最多只能传递2个参数
SEL sel3 = @selector(sendMessageWithNumber:andContent:);
[p performSelector:sel3 withObject:@"138383438" withObject:@"abcdefg"];
 */

// 3.配合对象将SEL类型作为方法的形参
Car *c = [Car new];
SEL sel = @selector(run);

Person *p = [Person new];
[p makeObject:c andSel:sel];
return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,890评论 0 9
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 14,047评论 6 13
  • 大纲 0.OC数据类型 1.声明一个类 2.实现一个类 3.创建一个对象 4.对象的注意点 5.对象方法 6.类方...
    天天想念阅读 4,822评论 0 3
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,604评论 18 399
  • Lofter这个应用,我陆陆续续用了两年了,应该说删了又安装每隔一段时间就有个重复,总是用的不太舒服然后删掉,过了...
    小佳子同学阅读 4,676评论 0 4

友情链接更多精彩内容