浅议运行时

浅议智能体 智能体作为人工智能领域的重要研究方向,其发展历程充满了探索与创新。从早期的理论探索到现今的广泛应用,智能体技术已经取得了显著的进展。未来,随着技术的不断融合与创新,智能体将在更多领域发挥重要作用,为人们的生活和工作带来更多便利和效率。同时,我们也需要关注智能体发展过程中的伦理和法律问题,确保其安全、可靠和可控。相信在不久的将来,智能体将成为人工智能领域的一颗璀璨明珠,为人类的进步和发展做出更大贡献。 阅读详情

iOS在执行功能时,会尽可能从编译和链接时推迟到运行时。运行时系统扮演的角色就行我们的电脑系统一样,而我们编写的程序就像在Windows系统里的QQ、QQ音乐,运行时提供给我们程序的运行环境和交互。

程序和运行时系统的交互

首先,代码的执行必须要和运行时系统进行交互,要不然运行是系统怎么能够知道你要干什么?

1.通过Objective-C源代码交互
当编译器要编译Objective-C时,将自动创建一些数据结构和函数。在这些数据结构包含类定义和协议类中定义的方法和对象,以及一些其他的信息。运行时系统就会根据源代码的表达式发送消息。
2.通过类NSObject的方法交互
在我们编写的程序中大部分的类都是NSObject类的子类(NSProxy是一个例外),因此也继承了NSObject的许多方法和行为。例如,NSObject 类定义了description方法,用于返回该类内容的字符串,当我们子类要调用它时,我们可以重写它,运行是系统就会对对象进行一定程度的自我检查,给我们提供更多的类的信息,像这样的方法还有很多,像,isKindOfClass:、isMemberOfClass:……
3.通过运行时给我们提供的函数进行交互
运行时系统是一个有公开接口的动态库,由一些数据结构和函数的集合组成,这些函数支持C和OC语言。这些函数用来访问运行时系统成为可能(这种情况在OC程序中不是必须的)。

消息

在程序和运行时交互时,代码是以消息的表达式转换为对objc_msgSend函数的调用。动态调用方法的途径是通过方法的地址,就像调用函数一样调用它。具体作法是:通过利用NSObject类的methodForSelector:方法,获得指向方法实现的指针,并且使用该指针直接调用方法的实现。如下例子展示了怎样使用指针来调用setFilled:方法的实现

void (*setter)(id,SEL,BOOL);

    setter = (void (*)(id,SEL,BOOL))[target methodForSelector:@selector(setFilled:)];

    for (int i = 0; i < 1000; i++) {
        setter(targetList[i],@selector(setFilled:),YES);
    }

objc_msgSend函数
在OC中,消息是直到运行的时候才和方法实现绑定的。编译器会将消息表达式:
[receiver message];
转换成一个对消息函数objc_msgSend的调用。该函数有两个主要参数:消息接受者和消息对应的方法名字:
objc_msgsend(receiver,selector);
那么,该消息函数做了那些事情那?如下听我慢慢道来:
1.根据消息接受者的类型,找到对应的方法实现,不同的类对同一方法有不同的实现
2.然后将指向消息接受者对象的指针以及方法中的参数传给找到的方法实现
3.最后,将方法实现的返回值作为该函数的返回值返回
以上几步,有几点需要注意:
one:在找方法实现时,是根据方法表进行找的,方法表:是将方法选标(方法声明)和该类的方法实现的地址关联起来的一个表。
two:当一个对象被创建时,内存被分配,实例变量也同时被初始化。第一个实例变量就是指向该对象的类结构的指针,叫做isa。通过该指针我们就可以访问它对应的类以及相应的父类。
three:当对象收到消息时,消息函数首先会根据该对象的isa指针找到该对象对应的方法表,并从该方法表中找到该消息的对应的方法选标。如果找不到就继续从父类中去找,知道NSObject类。同时为了加快消息的处理过程,运行时系统会将使用过的方法选标和方法实现的地址放入缓存中。每个类都有一个独立的缓存,同时包括继承的方法和在该类中定义的方法,在调用消息函数中它会首先从类的缓存中去找是否有。
消息框架图如下:
这里写图片描述

生活不易,码字更不易,若您认为有帮助,给个赞吧,亲!如有瑕疵,请指正。

STM32+OOK通讯(OOK发送+OOK接收)+cubemx配置 关于OOK通信,我的理解就是将要发送的信息转换成高低电平(即0和1),然后接收方通过对01进行解码获得信息。于是我用了非常朴素的字符串转二进制+AM调制来完成通信链。话不多说我们直接开始!!! 阅读详情

相关推荐

本地大模型部署实战:LM Studio与Ollama的易用性与性能深度评测

本文对两款主流本地大模型部署工具LM Studio和Ollama进行了深度评测。LM Studio凭借图形化界面和内置模型库,为新手提供了开箱即用的便捷体验,并支持OpenAI兼容API,易于生态集成。Ollama则以命令行驱动,轻量高效,凭借其原生API和Modelfile自定义能力,在自动化集成和性能方面表现突出。文章从易用性、模型生态、性能及扩展性多维度对比,帮助用户根据自身技术背景和使用场景做出最佳选择。

weixin_29039773的博客 528

浅议代码安全检测

二进制代码安全如何测试

软件安全,天下无贼 2574

告别CNN局限:用Transformer+迁移学习搞定高光谱图像分类(附Pytorch代码)

本文探讨了如何利用Transformer的自注意力机制和迁移学习策略解决高光谱图像分类中的挑战。通过结合CNN的局部特征提取和Transformer的全局建模能力,提出的DenseTransformer架构在多个数据集上实现了显著的性能提升。文章还提供了详细的PyTorch实现代码和工程优化技巧,帮助开发者快速应用这一技术。

weixin_32771907的博客 608

浅议 Dynamic_cast 和 RTTI

浅议 Dynamic_cast 和 RTTI 写这篇博文的目的是,记录学习过程。 对于问题要较真,在解决这个问题中会学到很多,远远超过自己期望,锻炼思维,享受这个过程。 问题: Static_cast 与 Dynamic_cast的区别 来自书本上的解释: 用 static_cast<type-id > ( expression ) 1. static_cast(e...

u011764940的博客 573

AIDL HAL服务从零到一:构建现代Android硬件抽象层

本文详细介绍了从零开始构建现代Android AIDL HAL服务的完整流程。通过定义接口、实现服务逻辑、配置构建与VINTF清单,并最终集成到系统镜像,开发者可以掌握利用AIDL替代传统HIDL来开发硬件抽象层的核心方法。文章重点解析了AIDL HAL的创建流程,并对比了其与HIDL在语法、工具链和集成方式上的优势,帮助开发者高效构建稳定的硬件接口。

weixin_29174141的博客 145

AI视频生成模型训练:从数据准备到部署全流程

咱们这次的目的就像是要建造一座超级厉害的AI视频生成魔法城堡。范围呢,就是从收集建造城堡的材料(数据准备)开始,到把城堡搭建起来(模型训练),再到让城堡能供大家使用(模型部署),涵盖了整个过程的方方面面。接下来我们会先给大家介绍一些重要的术语,就像认识冒险途中的关键道具一样。然后引入一个有趣的故事,带大家进入AI视频生成的奇妙世界,解释核心概念以及它们之间的关系。接着会详细讲解核心算法原理、数学模型和公式,还会有项目实战,带大家亲自体验代码的魅力。

小白菜的博客 399

Python浅议

Python 语言浅议starstarstarpku@gmail.com摘要:Python是面向对象的脚本语言,具有很多现代语言的优秀特征;本文简要介绍Python语言的某些特性,应用领域,设计哲学,并与其它语言做简单对比。注:笔者使用的Python版本是2.4.2关键字:脚本语言(scripting language) 动态语言(Dynamic Programming Language)、内省(

unicode1985的专栏 3109

YOLO26优化:特征融合 | 一种新颖的多尺度特征融合iAFF,适配小目标检测

在YOLO26中如何使用:iAFF加入Neck替代Concat;

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 270

浅议Altas Hive Hook的运行机制

Atlas 通过自带的Hive Hook程序获取hive sql执行过程中的元数据变动。本文通过分析Hive Hook的相关代码来探究其运行机制。

HuailiShang的博客 457

全网详细解决:无法将 “xxx” 项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次

全网详细解决:无法将 “xxx” 项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

念兮为美 5万+

【深度学习新浪潮】Qwen3.5-397B-A17B 深度解析与工程部署实战:超大MoE模型的推理加速与落地

Qwen3.5-397B-A17B是当前开源社区综合能力最强、部署效率最高的超大模型,其MoE架构彻底解决了“大模型难部署、慢、贵”的痛点。

专注:太空算力、AI infra、异构调度、大模型成本工程 1708

浅议 Dynamic_cast 和 RTTI与虚函数表的关系

浅议 Dynamic_cast 和 RTTI 写这篇博文的目的是,记录学习过程。 对于问题要较真,在解决这个问题中会学到很多,远远超过自己期望,锻炼思维,享受这个过程。 问题: Static_cast 与 Dynamic_cast的区别 来自书本上的解释:   用 static_cast ( expression )   1. static_cast(expression) The

u010585135的专栏 3113

【AUTOSAR-E2E】-1.4-详述E2E Transformer解决方案

共13页精讲 目录 1“Data Transformation”介绍 1.1 基于SOME/IP Transformer 1.2 基于COM Based Transformer 2 ComXf(COM Based Transformer)介绍 2.1 ComXf(COM Based Transformer)功能规范 2.2 ComXf(COM Based Transformer)提供的服务 2.3 配置注意事项 3 E2EXf(E2E Transformer)介绍 3.1 E2EX...

「汽车电子助手」的博客 4700

C++内存回收——浅议C++ 中的垃圾回收方法

浅议C++ 中的垃圾回收方法 作者:出处:BLOG责任编辑: 方舟 [ 2006-04-25 16:58 ]许多 C 或者 C++ 程序员对垃圾回收嗤之以鼻,认为垃圾回收肯定比自己来管理动态内存要低效 许多 C 或者 C++ 程序员对垃圾回收嗤之以鼻,认为垃圾回收肯定比自己来管理动态内存要低效,而且在回收的时候一定会让程序停顿在那里,而如果自己控制内存管理的话,分配和释放时间都

面朝大海 春暖花开 2479

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

浅议虚拟方法

    若一个实例方法的声明中含有 virtual 修饰符,则称该方法为虚拟方法。若其中没有 virtual 修饰符,则称该方法为非虚拟方法。    非虚拟方法的实现是不会变的:无论是在声明它的类的实例上调用该方法还是在派生类的实例上调用,实现都是相同的。与此相反,一个虚拟方法的实现可以由派生类取代。取代所继承的虚拟方法的实现的过程称为重写该方法。    在一个虚拟方法调用中,该调用所涉及的那个实

LoveCleverDog的专栏 1060

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

浅议PIM(一文看懂PIM)

今天写一下组播PIM协议的相关内容,目的是试图用最简洁的语言方便0基础同学看懂PIM的原理,关于PIM更加深层次的内容欢迎查阅本博客其他文章,有关于PIM的深层次理论知识。 一、先导知识——了解组播 对于组播不是很了解的同学,可以先看这一篇文章浅议组播(一文看懂组播),以对组播基础知识现有了解。 简单来说,组播还是在单播的基础上实现的,对于组播源和组播接收者来说,还是有着自己的IP地址。只不过组播源在发送组播流量的时候,目的IP地址是一个D类的组播地址,而组播接受者也会接收目的地址是指定D类IP地址的数据包

永远是少年 8706

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

浅议Atlas HiveMetaStoreBridge 运行机制

使用HiveMetaStoreBridge的方式来导入Hive的历史元数据,分析其运行过程

HuailiShang的博客 274

浅议理解EF Core5的运行机制

在EF Core 5中,有很多方式可以窥察工作流程中发生的事情,并与该信息进行交互。这些功能点包括日志记录,拦截,事件处理程序和一些超酷的最新出现的调试功能。EF团队甚至从Entity F...

farway000的博客 373

浅议Web服务

浅议Web服务作者-阿 金随着互连网络的广泛应用和发展,特别是.NET技术的升温和市场的日渐成熟,越来越多软件开发商在为到底是选择微软公司的.NET还是SUN公司的J2EE作为自己开发平台和工具而感到左右为难。一般说来,绝大多数公司根据市场情况,客户需求,开发成本,升级成本,培训成本,产品价格,兼容性,可靠性、安全性等选择了其中之一。也有少数有实力的公司准备开发两套独立的产品,以满足不同的客户

841

关于python中函数的浅议

函数的本质是接收一些参数,对参数进行特定规则的处理,最终输出一些结果。 python中的函数能够帮助用户快速完成程序化的工作,灵活地组合运用函数则能够完成多样化的任务。 python的函数支持接收一系列参数,并对系列参数在函数体中进行加工,最终返回一些结果

GuFeng1999的博客 367

浅议实时操作系统RTOS

相较于通用的分时操作系统(Linux、Windows、Unix等),RTOS有着仅适用于嵌入式应用程序、基于时间片调度、抢占式内核等特点,其中断延迟可达到以微秒为单位。

digi2020的博客 5118
上一篇: 九宫格排布
下一篇: view的生命周期
NeXTSTEP110
博客等级 码龄11年 14粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值