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]SEL类型、@selector选择器

object c中的selector 其作用相当于函数指针,现在我看到的大多说用法都是在调用某些函数需要传递一个 函数指针 参数时,使用@selector。它会在当前类里面查找select...
  • Mamong
  • Mamong
  • 2012-10-19 12:12
  • 8632

SEL类型

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

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

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];...

OC关键字@property、@synthesize和id类型、构造方法、分类categary、类的本质、description方法、SEL消息机制

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、关键字@property、@synthesize和id类型 1、使用关键字@...

Object-c之id ,instancetype,SEL,_cmd;self,super几种类型的区别及用法

一 id 和instancetype相同点: instanceType和id都是作为方法的返回类型而被使用。 不同点: 1.instancetype可以返回和方法所在类相同类型的对象,id返回的...

黑马程序员----Objective-C学习笔记之类的本质与SEL类型

------Java培训、Android培训、iOS培训、.Net培训-------- 一、类的本质 1、类的本质 类的本质其实也是一个对象(类对象),是Class类型   【类对象】 1...

87,SEL类型

#import @interface Person : NSObject +(void)run; -(void)print; -(void)sig...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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