SEL类型整理

转载 2013年12月03日 16:46:59
Objective-C在编译的时候,会根据方法的名字(包括参数序列),生成一个用 来区分这个方法的唯一的一个ID,这个ID就是SEL类型的。我们需要注意的是,只要方法的名字(包括参数序列)相同,那么它们的ID都是相同的。就是 说,不管是超类还是子类,不管是有没有超类和子类的关系,只要名字相同那么ID就是一样的。

我们可以方便的通过方法的名字,获取到方法的ID也就是我们所说的SEL,反之亦然。具体的使用方法如下: 
1     SEL 变量名 = @selector(方法名字); 
2     SEL 变量名 = NSSelectorFromString(方法名字的字符串); 
3     NSString *变量名 = NSStringFromSelector(SEL参数); 

这样的机制大大的增加了我们的程序的灵活性,我们可以通过给一个方法传递SEL参数,让这个方法动态的执行某一个方法;我们也可以通过配置文件指定需要执行的方法,程序读取配置文件之后把方法的字符串翻译成为SEL变量然后给相应的对象发送这个消息。 

  从效率的角度上来说,执行的时候不是通过方法名字而是方法ID也就是一个整数来查找方法,由于整数的查找和匹配比字符串要快得多,所以这样可以在某种程度上提高执行的效率。 

相关文章推荐

objective-C中的Class(类类型),Selector(选择器SEL),函数指针(IMP)

今天在园子里看到了一篇牛文“Objective-C 2.0 with Cocoa Foundation--- 5,Class类型,选择器Selector以及函数指针 ”,讲得十分精彩,忍不住把它的...
  • weiqubo
  • weiqubo
  • 2012年04月26日 14:24
  • 1590

黑马程序员_iOS开发之OC之面向对象之id语法、构造方法、@category分类、类本质、description方法和SEL数据类型

1、id语法

SEL类型

什么是SEL类型 SEL类型代表着方法的签名,在类对象的方法列表中存储着该签名与方法代码的对应关系 每个类的方法列表都存储在类对象中 每个方法有一个与之对应的SEL类型的对象 根据一个SEL对象就可以...
  • hejiasu
  • hejiasu
  • 2017年04月19日 06:55
  • 116

Objective-C中Selector基本概念和操作(SEL类型)

http://hi.baidu.com/long0419/item/1feb294362672f17896d109d http://soft.chinabyte.com/database/3...
  • sqk1988
  • sqk1988
  • 2012年10月12日 10:30
  • 3800

SEL类型(用来封装方法)

一个SEL类型数据就是一个方法,OC中会将方法地址封装成SEL类型。即每一个SEL都表示对应的方法在内存中的存储位置 当在调用方法时,会查找每一个SEL类型的数据,找到后,通过SEL中封装的方法内...

SEL类型

什么是SEL类型? 1.SEL类型代表着方法的签名,在类对象的方法列表中存储着该签名与方法代码的对应关系; 2.每个类的方法列表中都存储在类对象中 3.根据一个SEL对象就可以找到方法的地址,进...

Objective-C数据类型之id,SEL,BOOL,nil,NULL和NSNull

1 前言 对于新接触Objective-C的新手们来说,数据类型应该是最基础不过的了,对于Objective-C的基本数据类型,了解多少,今天我们就来介绍一下。 2 详述 2.1 id id是...

Objective-C中的一些特殊的数据类型 id、nil、Nil、SEL

Objective-C中有一些很有趣的数据类型经常会被错误地理解。他们中的大多数都可以在/usr/include/objc/objc.h或者这个目录中的其他头文件中找到。下面是从objc.h中摘录的一...

黑马程序员——ObjectiveC基础——类对象和SEL类型

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-一、概述 类的本质: 类的本质其实是一个对象(类对象) Person *p1 = [Person new];...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SEL类型整理
举报原因:
原因补充:

(最多只允许输入30个字)