当前位置:网站首页>OC-消息机制
OC-消息机制
2022-07-27 01:09:00 【彭同学她同桌】
什么是消息机制
相较于C++的函数调用方式 OC采用的是消息传递
下面我们来对两种方式做一个类比
在函数调用中如果要使用一个函数,一般是将参数压入栈 再寻找函数地址 将参数从栈中拿出 得出结果再返回原来运行处 再进行调用。或者是在编译时就将代码在调用处展开
而消息传递是不管你是否多态,总是在运行时才会去查找所要执行的方法。
所以使用消息结构的语言,其运行时所应执行的代码由运行环境来决定;而使用函数调用的语言则由编译器决定
什么是消息选择器
向一个对象发送消息时简单的代表了一个方法名 比如[a func]此时func是方法名
当源代码编译时选择器会被指向一个唯一标识以代替方法名 主要是为了更快编译
SEL就是消息选择器 SEL s1 = @selector(func);
为什么要消息选择器
出于运行效率的考虑,在编译后的代码中不会使用有ASCII码组成的方法名,
取而代之的是,编译器会将每个方法名写到一张表去,然后为每个方法名分
配一个唯一标识用于在运行时标识一个方法
SEL sor; (sor就是消息选择器 也可以看作唯一标识)
-(void)who:(int)n;
sor = @selector(who:);
注意!这个sor标识的只是方法名!并不是指定了就是这个方法实现
边栏推荐
猜你喜欢

IDEA 连接数据库查询数据后控制台表头中文乱码的解决方法

Redis四大特殊数据类型的学习和理解

Hcip 13th day notes

基于.NetCore开发博客项目 StarBlog - (16) 一些新功能 (监控/统计/配置/初始化)

185. All employees with the top three highest wages in the Department (mandatory)

Skywalking系列学习之告警通知源码分析

The EXE compiled by QT is started with administrator privileges

制作ppt时间轴

八皇后编程实现

Worthington木瓜蛋白酶解离系统解决方案
随机推荐
批量复制宝贝上传提示乱码,如何解决?
2513: 小勇学分数(公约数问题)
百度云人脸识别
一体式水利视频监控站 遥测终端视频图像水位水质水量流速监测
Role of thread.sleep (0)
196. 删除重复的电子邮箱
185. All employees with the top three highest wages in the Department (mandatory)
cocos小游戏实战-05-NPC与角色攻击逻辑
vs2019 中编译和使用 protobuf 库
Complete source code of mall applet project (wechat applet)
如何使用DevExpress WPF在WinUI中创建第一个MVVM应用程序?
力扣(LeetCode)207. 课程表(2022.07.26)
朴素贝叶斯——文档分类
Single case mode (double check lock)
My crawler notes (VII) blog traffic +1 through Crawlers
Shell (38): SSH port forwarding
Bulk copy baby upload prompt garbled, how to solve?
Call jshaman's Web API interface to realize JS code encryption.
Localstorage and sessionstorage
Abbkine AbFluor 488 细胞凋亡检测试剂盒特点及实验建议