探察RUNTIME_CLASS之类的秘密

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
探察RUNTIME_CLASS之类的秘密
学mfc学到文档,视图和框架的时候,知道必须在这三个类的派生类的类声明 
里加上DECLARE_DYNCREATE,然后在类声明外合适的地方加上IMPLEMENT_DYNCREA 
TE,然后文档,视图和框架,还有文档模板就可以协调工作了。查看msdn,发现 
类似的宏有这几对: 
DECLARE_DYNAMIC 和 IMPLEMENT_DYNAMIC 
DECLARE_DYNCREATE 和 IMPLEMENT_DYNCREATE 
DECLARE_SERIAL 和 IMPLEMENT_SERIAL 

虽然msdn里介绍了他们的作用,但对于它们为什么会起这样的作用心里却没 
底,于是翻了翻mfc的源代码,喜欢钻牛角尖的人可以和我一起来钻一钻。 

1。 
RUNTIME_CLASS宏的定义是这样的: 
#define RUNTIME_CLASS(class_name) 
((CRuntimeClass*)(&class_name::class##class_name)) 
其中##的意思是把##两边的符号都进行宏扩展(如果它们是宏的话),然后把扩展 
后的内容连接在一起,中间不加空格。例如:RUNTIME_CLASS(CView)将被扩展成 
: 
(CRuntimeClass*)(&CView::classCView) 
但这个c
Runtime方法的使用—Class 二十一世纪最贵的是什么? ————————————— 答案:人才or房子 本篇主要是各种Class相关方法的实现,还有两种运行时调用方法的实现 - (void)viewDidLoad { [super viewDidLoad]; // 调用方法方案1 // objc_msgSend(self,@selector(initial:),@"完成初始化"); // 阅读详情

相关推荐

kubernetes入门之容器运行时类

RuntimeClass是一个用于选择容器运行时配置的特性,容器运行时配置用于运行Pod中的容器。

蛐蛐的博客 470

5.1运行时类信息CRuntimeClass

CRuntimeClass类 在程序运行的过程中辨别对象是否属于特定类的技术叫动态类型识别(Runtime Type Infomation,RTTI)。当函数需要识别其参数类型的时候,或者是必须针对对象所属的类编写特殊目的的代码时,运行期识别就变得非常有用了。 框架程序使用这一技术管理应用程序是非常方便的,因为用户可以任意设计自己的类,框架程序可以在程序执行的时候知道这个类的类名、大小等信息,并能创建这个类的对象。 动态类型识别和动态创建 如何识别对象是否属于某个类呢?区别进程可以使用进程ID,区别窗口可以

qq_36314864的博客 845

C#中安全删除正在运行程序或文件的完整解决方案

htmltable {th, td {th {pre {简介:在Windows系统中,由于文件锁机制的存在,直接删除正在运行的程序或文件通常会失败。本文深入探讨了在C#环境中如何安全释放文件锁并实现删除操作,涵盖进程控制、同步对象、延迟删除、重命名策略、Shadow Copy技术及第三方库应用等方法。通过合理使用Process类、异常处理与用户确认机制,开发者可在保障系统稳定性的同时完成高风险文件操作。本方案适用于需要动态管理运行时资源的应用场景。

weixin_35794316的博客 1236

RUNTIME_CLASS

RUNTIME_CLASS RUNTIME_CLASS( class_name ) 【参数】 class_name:类的实际名字(不用引号括起来)。 【说明】 利用这个宏通过C++类的名字获得一个运行时类结构。 RUNTIME_CLASSclass_name指定的类返回一个指向CRuntimeClass结构的指针。只有用DECLARE_DYNAMIC,DECLARE_DYNCREAT...

《好好先生》专栏 5319

Android获取正在运行的程序并kill掉它

获取正在运行的程序并把它加入到一个listview的adapter类面,方法如下: // 正在运行的 public List getRunningProcess() { pi = new PackagesInfo(this); am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); // 获取正在运行的应用 ru

Linux灰灰的云深无迹 4614

停止正在运行的docker容器及docker容器删除

1停止正在运行中的docker进程 执行以下命令 docker ps 结果如下 ONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ffc1792471da registry.cn-sh

tiaobolian6687的博客 2万+

kill -9 和 kill -15 的区别

相信很多程序员对于Linux系统都不陌生,即使自己的日常开发机器不是Linux,那么线上服务器也大部分都是的,所以,掌握常用的Linux命令也是程序员必备的技能。 但是,怕就怕很多人对于部分命令只是一知半解,使用不当就能导致线上故障。 前段时间,我们的线上应用报警,频繁FGC,需要紧急处理问题,于是有同事去线上重启机器(正常程序应该是先采集堆dump,然后再重启,方便排查是否存在内存泄露等问题)。 但是在重启过程中,同事发现正常的重启命令应用无反应,然后尝试使用kill命令"杀"掉Java进程,但是仍

chuixue24的博客 1万+

killnet软件怎么用_kill命令_Linux kill 命令用法详解:删除执行中的程序或工作

kill命令用来删除执行中的程序或工作。kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或job指令查看。语法kill(选项)(参数)选项-a:当处理当前进程时,不限制命令名和进程号的对应关系;-l :若不加选项,则-l参数会列出全部的信息名称;-p:指定kill...

weixin_34779096的博客 788

Runtime.class有什么用

Every Java application has a single instance of class Runtime that allows the application to interface with the environment in which the application is running.

Mr_Susy的博客 568

RunTime Class 结构

目录Class Class 定义:Objective-C类是由Class类型来表示的,它实际是一个指向objc_class结构体的指针。它的定义如下 typedef struct objc_class *Class; 打开objc源码 可以看到class的结构有两处 首先 struct objc_class { Class _Nonnull isa OBJC_ISA_AVAILABILITY; #if !__OBJC2__ Class _Nullable super_clas.

weixin_44824650的博客 452

从零开始入门 K8s | 理解 RuntimeClass 与使用多容器运行时

作者 | 贾之光阿里巴巴高级开发工程师 本文整理自《CNCF x Alibaba 云原生技术公开课》第 30 讲,点击直达课程页面。 关注“阿里巴巴云原生”公众号,回复关键词“入门”,即可下载从零入门 K8s 系列文章 PPT。 一、RuntimeClass 需求来源 容器运行时的演进过程 我们首先了解一下容器运行时的演进过程,整个过程大致分为三个阶段: 第一个阶段:20...

阿里云云栖号 2718

课时 30:理解 RuntimeClass 与使用多容器运行时(贾之光)

本文将主要分享以下三方面的内容: RuntimeClass 需求来源 RuntimeClass 功能介绍 多容器运行时示例 RuntimeClass 需求来源 容器运行时的演进过程 我们首先了解一下容器运行时的演进过程,整个过程大致分为三个阶段: 第一个阶段:2014 年 6 月 Kubernetes 正式开源,Docker 是当时唯一的、也是默认的容器运行时。 第二个阶段:Kubernet...

阿里巴巴云原生的博客 522

RUNTIME_CLASS( class_name )

RUNTIME_CLASS RUNTIME_CLASS RUNTIME_CLASS( class_name ) 参数: class_name 类的实际名字(不用引号括起来)。 说明: 利用这个宏通过C++类的名字获得一个运行时类结构。 RUNTIME_CLASSclass_name指定的类返回一个指向CRuntimeClass

autumn20080101的专栏 937

MFC RUNTIMECLASS

struct CRuntimeClass{    // Attributes    LPCSTR m_lpszClassName;    int m_nObjectSize;    UINT m_wSchema; // schema number of the loaded class    CObject* (PASCAL* m_pfnCreateObject)(); // NULL => abstract class    CRuntimeClass* m_pBaseClass;    // CRunt

lovecandc的专栏 715

Runtime运行时之Class常用方法

原文地址 注: 此篇中记录的是以class开头的runtime函数 一、创建对象 创建一个对象 id class_createInstance(Class cls, size_t extraBytes) 复制代码 cls: 类型 extraBytes: 分配的内存大小 返回值: cls类型的实例对象 例子: size_t size = class_getInstanceSize(...

weixin_33847182的博客 368

iOS - Runtime - Class的结构

前面我们学习OC对象的时候,了解了class类对象、meta-class元类对象实际上,class类对象、meta-class元类对象底层结构体都是class元类对象可以认为是特殊的类对象。他们底层结构是一样的,只不过存储的内容有所区别。

sharp521的博客 1298
下一篇: VC++的链接错误LNK2001
whiteeyes
博客等级 码龄24年 0粉丝 2原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值