当前位置: 首页 > news >正文

Objective-C 中的SEL

在 Objective-C 中,SEL(Selector)是一种用来表示方法的类型。

它实际上是一个指向方法的指针,用于在运行时动态调用方法。

下面是一个使用 SEL 的代码示例:
 

#import <Foundation/Foundation.h>@interface MyClass : NSObject
- (void)method1;
- (void)method2;
@end@implementation MyClass
- (void)method1 {NSLog(@"This is method1");
}- (void)method2 {NSLog(@"This is method2");
}
@endint main() {SEL selector1 = @selector(method1);SEL selector2 = @selector(method2);MyClass *myObject = [[MyClass alloc] init];// 通过 SEL 调用方法if ([myObject respondsToSelector:selector1]) {IMP imp = [myObject methodForSelector:selector1];void (*func)(id, SEL) = (void *)imp;func(myObject, selector1);}if ([myObject respondsToSelector:selector2]) {IMP imp = [myObject methodForSelector:selector2];void (*func)(id, SEL) = (void *)imp;func(myObject, selector2);}return 0;
}
  1. 上述代码定义了一个名为 `MyClass` 的类,其中包含了两个方法 `method1` 和 `method2`
  2. 在 `main` 中使用 `SEL` 类型变量 `selector1` 和 `selector2` 分别指向 `method1`和 `method2` 方法
  3. 然后,我们创建了一个 `MyClass` 对象 `myObject`。
  4. 通过调用 `[myObject respondsToSelector:]` 方法可以判断该对象是否实现了对应的方法。
  5. 如果实现了,我们可以使用 `[myObject methodForSelector:]` 方法获取方法的实现 `IMP`,然后将其转换为函数指针,并调用该函数。

最终的输出结果将会是:

This is method1
This is method2
http://www.lryc.cn/news/297949.html

相关文章:

  • 使用 Docker 镜像预热提升容器启动效率详解
  • 锁(二)队列同步器AQS
  • 【知识整理】招人理念、组织结构、招聘
  • 监控概述、安装zabbix、配置zabbixagent、添加被控端主机、常用监控指标、自定义监控项
  • 恒创科技:香港 BGP 服务器网络连通性如何测试?
  • 《动手学深度学习(PyTorch版)》笔记7.6
  • Quicker读取浏览器的书签(包括firefox火狐)
  • 【数学建模】【2024年】【第40届】【MCM/ICM】【B题 搜寻潜水器】【解题思路】
  • 深入探索Redis:如何有效遍历海量数据集
  • 贪心算法之田忌赛马,多种语言实现
  • C++ static 修饰全局变量时的作用探究
  • Git的基础操作指令
  • 前端开发:(四)JavaScript入门
  • js文件忽略ESLint语法检查
  • 【深度学习】:实验6布置,图像自然语言描述生成(让计算机“看图说话”)
  • 内网安全-内网穿透
  • 【Make编译控制 01】程序编译与执行
  • MySQL如何定位慢查询
  • npm 上传一个自己的应用(4) 更新自己上传到NPM中的工具版本 并进行内容修改
  • Linux开发:PAM1 介绍
  • Leetcode 3036. Number of Subarrays That Match a Pattern II
  • 华为环网双机接入IPTV网络部署案例
  • “智能检测,精准把控。温湿度检测系统,为您的生活带来全方位的健康保障。”#非标协议项目【上】
  • 牛客网SQL进阶137:第二快/慢用时之差大于试卷时长一半的试卷
  • CVE-2022-0760 漏洞复现
  • WordPress突然后台无法管理问题
  • STM32F1 - 标准外设库_规范
  • 推荐系统|召回04_离散特征处理
  • 一个查看armv8系统寄存器-值-含义的方式
  • LLMs之miqu-1-70b:miqu-1-70b的简介、安装和使用方法、案例应用之详细攻略