`
修博龙泉
  • 浏览: 318187 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

iOS SEL类型iOS SEL类型

 
阅读更多
bjective-C在编译的时候,会根据方法的名字(包括参数序列),生成一个用 来区分这个方法的唯一的一个ID,这个ID就是SEL类型的。我们需要注意的是,只要方法的名字(包括参数序列)相同,那么它们的ID都是相同的。就是 说,不管是超类还是子类,不管是有没有超类和子类的关系,只要名字相同那么ID就是一样的。

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

这样的机制大大的增加了我们的程序的灵活性,我们可以通过给一个方法传递SEL参数,让这个方法动态的执行某一个方法;我们也可以通过配置文件指定需要执行的方法,程序读取配置文件之后把方法的字符串翻译成为SEL变量然后给相应的对象发送这个消息。 
  从效率的角度上来说,执行的时候不是通过方法名字而是方法ID也就是一个整数来查找方法,由于整数的查找和匹配比字符串要快得多,所以这样可以在某种程度上提高执行的效率。 

分享到:
评论

相关推荐

    iOS课程大纲

    - 关键字、常用数据类型、SEL类型和id类型的讲解。 - 运算符表达式、作用域与限定符、控制语句等基础语法。 - Block、面向对象编程(OOP)、多态与继承等高级特性。 - 内存管理和引用计数机制。 - **R02:...

    ios-ios 选择器.zip

    选择器在Objective-C中以`SEL`类型表示,可以通过`@selector()`语法声明。例如,如果你有一个名为`myMethod:`的方法,你可以声明它的选择器为`SEL mySelector = @selector(myMethod:)`。这里的冒号表示该方法接受一...

    ios-H264实时硬件编解码demo.zip

    在iOS平台上,实时视频处理和传输常常涉及到H264编码和解码技术。H264,全称为Advanced Video Coding(高级视频编码),是一种高效、高质量的视频压缩标准,广泛应用于移动设备、网络视频流、监控系统等领域。本demo...

    iOS之presentViewController模态全屏适配解决方案.docx

    iOS之presentViewController模态全屏适配解决方案 .isPresentViewController模态全屏适配是iOS开发中的一项重要技术问题。从iOS 13.0开始,默认的模态显示视图从全屏变成了Sheet卡片样式的非全屏模式。这使得许多...

    ios-简单选择器.zip

    选择器在Objective-C中是SEL类型的,它是一个指向方法签名的指针。当你向对象发送消息时,实际上就是在调用对应的选择器。例如,`[anObject performSelector:@selector(aMethod)]` 将会调用`anObject`上的`aMethod`...

    ios runtime动态添加方法demo

    参数包括接收方法的类,方法的选择器(SEL),实现方法的IMP(函数指针),以及方法的类型编码(char *)。例如,我们可以这样添加一个名为`customMethod`的方法: ```objc SEL customSelector = @selector...

    Class(类类型),Selector(选择器SEL),函数指针(IMP)

    在Objective-C中,Class、Selector(选择器SEL)和函数指针(IMP)是三个非常重要的概念,它们构成了Objective-C动态特性的基础。下面将详细解释这三个概念以及它们之间的关系。 1. Class(类类型): 在Objective...

    iOS runtime底层框架原码

    5. **动态类型(Dynamic Typing)**:OC支持在运行时检查和修改对象的类型,这是通过runtime的`object_getClass()`、`class_isMetaClass()`等函数实现的。 6. **协议(Protocol)**:协议定义了一组方法签名,类...

    iOS tabbar图片资源

    let homeItem = UITabBarItem(title: "首页", image: UIImage(named: "ic_home_all@3x"), selectedImage: UIImage(named: "ic_home_me_sel@3x")) ``` 总之,iOS TabBar的图片资源是应用界面设计的关键组成部分,...

    iOS常用类别(Category)

    - `UIView+TapGesture`: 提供单击手势识别功能,如`- (void)addTapGestureRecognizerWithTarget:(id)target action:(SEL)action`。 5. UIColor Category: - `UIColor+HexString`: 从十六进制字符串创建颜色对象...

    iOS消息转发机制在项目中的应用

    iOS的消息转发机制是Objective-C(OC)语言中一个至关重要的特性,它允许对象在接收到无法响应的消息时有机会处理或转发这些消息。这一机制对于理解OC的动态性以及解决一些特定问题,如方法的动态绑定、类的扩展等,...

    ios-ZQTCustomSwitch.zip

    例如,`setOn:(BOOL)on animated:(BOOL)animated` 方法允许你在动画效果下改变开关的状态,而`addTarget:(id)target action:(SEL)action forControlEvents:UIControlEventValueChanged` 则可以让你在开关状态改变时...

    iOS面试题合集

    - **开发中最常用的锁**:开发者在实际应用中,根据具体情况选择合适的锁类型。例如,对于简单的资源保护,`@synchronized`比较常见;而对于更复杂的并发控制,则可能会使用NSLock系列。 - **Apple存在的锁问题**:...

    iOS反射Demo

    `NSClassFromString`可以根据字符串返回对应的类,而`NSSelectorFromString`则可以将字符串转换为SEL(选择器),从而调用对应的方法。在Swift中,反射则通过`Mirror`类型和`Type(of:)`表达式实现,可以方便地获取...

    iOS面试知识大纲

    - 方法选择器(SEL):标识方法的唯一标识符。 - KVC(Key-Value Coding)和KVO(Key-Value Observing):用于间接访问对象属性和监听属性变化。 - Method Swizzling:替换类的方法实现,常用于AOP(面向切面编程...

    ios-把block当成属性放在全局字典中的用例.zip

    SEL setterSel = @selector(setSharedBlock:); if (!class_getInstanceMethod(self.class, setterSel)) { class_addMethod(self.class, setterSel, imp_implementationWithBlock(block), "@@:"); } self....

    iOS runtimeIMP指针和消息转发机制Demo

    与静态类型语言不同,Objective-C在编译期间并不确定所有的方法调用,而是在程序运行时解析消息传递。Runtime提供了许多API,可以让我们在运行时查询类、对象、协议等信息,甚至改变它们的行为。 2. **IMP...

    iOS计时器(OC版)

    在iOS开发中,计时器(Timer)是一个非常常见的组件,用于执行周期性的任务或触发特定事件。在Objective-C(OC)中,我们通常使用`NSTimer`来实现这一功能。下面将详细介绍如何使用`NSTimer`来创建一个计时器,以及...

    iOS运行时(runtime)示例代码

    SEL selector = @selector(init); [obj performSelector:selector]; ``` 3. **消息传递**: Objective-C的消息传递机制是基于运行时的。当我们调用一个方法时,实际上是向对象发送一条消息。如果对象不响应该...

Global site tag (gtag.js) - Google Analytics