Runtime学习1

《ArcGIS Runtime for Android 100.2.1学习笔记》二:通过WebTiledLayer加载天地图 1、WebTiledLayer    WebTiledLayer是100.1后新加入的图层类型,用于定义一个可扩展的切片图层,该图层根据URL从切片服务器中请求图像,它提供了一种将非ArcGIS Services作为图层继承到地图中的简单方法。    URL通常遵循:http://{subDomain}.tile.opencyclemap.org/cycle/{level}/{col}/{row}... 阅读详情

最近在研究Runtime,感觉都是一知半解。

所以接敲了一个demo。

自己再学习下。

很多东西都是不知道。

以下是掌握这几个方法。

#warning 对象拷贝 \

id object_copy(id obj, size_t size)


#warning 对象释放 \

id object_dispose(id obj)


#warning 更改对象的类 \

Class object_setClass(id obj, Class cls) 


#warning 获取对象的类 \

Class object_getClass(id obj)


#warning 获取对象的类名 \

constchar *object_getClassName(id obj)


#warning 给类添加一个方法\

BOOL class_addMethod(Class cls,SEL name,IMP imp,const char *types)

/*

    BOOL class_addMethod(Class cls, SEL name, IMP imp, const char *types)

    参数说明:

    cls:被添加方法的类

    name:可以理解为方法名

    imp:实现这个方法的函数

    types:一个定义该函数返回值类型和参数类型的字符串

 

 */


CustomClass

//
//  CustomClass.m
//  Runtime学习1
//
//  Created by 陆巧怡 on 15/7/31.
//  Copyright (c) 2015年 Simon. All rights reserved.
//

#import "CustomClass.h"

@implementation CustomClass
-(void)func1{
    
    NSLog(@"func1");
}
@end

CustomClassOther

//
//  CustomClassOther.m
//  Runtime学习1
//
//  Created by 陆巧怡 on 15/7/31.
//  Copyright (c) 2015年 Simon. All rights reserved.
//

#import "CustomClassOther.h"

@implementation CustomClassOther
-(void)func2{
    
    NSLog(@"func2");
}
@end

实现代码 demo

//
//  ViewController.m
//  Runtime学习1
//
//  Created by 陆巧怡 on 15/7/31.
//  Copyright (c) 2015年 Simon. All rights reserved.
//

#import "ViewController.h"
//#import <objc/runtime.h>
#include<objc/runtime.h>
#import "CustomClass.h"
#import "CustomClassOther.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self twoParam];
    
    
}

#warning 对象拷贝 \
id object_copy(id obj, size_t size)
-(void)object_Copy_Func{
    
    CustomClass *obj = [[CustomClass alloc]init];
    NSLog(@"地址:%p", &obj);
    id objectTest = object_copy(obj,sizeof(obj));
    NSLog(@"地址:%p", &objectTest);
    // 拷贝的对象后 调用原有对象的方法
    [objectTest func1];
}

#warning 对象释放 \
id object_dispose(id obj)
-(void)object_dispose_Func{
    
    CustomClass *obj = [[CustomClass alloc]init];
    NSLog(@"地址:%p", &obj);
    
    object_dispose(obj);
    //释放对象
    [obj release];
    //调用方法崩溃
    [obj func1];
    
}

#warning 更改对象的类 \
Class object_setClass(id obj, Class cls) 
-(void)setClassText{
    
    CustomClass *obj = [[CustomClass alloc]init];
    //获取对象的类
    NSLog(@"obj原来的类%@",NSStringFromClass([obj class]));

    //更改对象的类
    Class change = object_setClass(obj, [CustomClassOther class]);
    NSLog(@"change 的类%@",NSStringFromClass(change));
    NSLog(@"obj更改后的类%@",NSStringFromClass([obj class]));
    //更改类之后调用新类的方法
    [obj func2];
}

#warning 获取对象的类 \
Class object_getClass(id obj)
-(void)getClassText{
    
    CustomClass *obj = [[CustomClass alloc]init];
    //获取对象的类
    Class objectClass = object_getClass(obj);
    NSLog(@"%@",NSStringFromClass(objectClass));
}

#warning 获取对象的类名 \
constchar *object_getClassName(id obj)
-(void)getClassName{
    
    CustomClass *obj = [[CustomClass alloc]init];
    NSString *className = [NSString stringWithCString:object_getClassName(obj) encoding:NSUTF8StringEncoding];
    NSLog(@"%@",className);
}

#warning 给类添加一个方法\
BOOL class_addMethod(Class cls,SEL name,IMP imp,const char *types)
/*
    BOOL class_addMethod(Class cls, SEL name, IMP imp, const char *types)
    参数说明:
    cls:被添加方法的类
    name:可以理解为方法名
    imp:实现这个方法的函数
    types:一个定义该函数返回值类型和参数类型的字符串
 
 */
-(void)oneParam{
    
    CustomClass *objectText = [[CustomClass alloc]init];
    
    //方法添加
    class_addMethod([CustomClass class],@selector(ocMethod:), (IMP)cfunction,"i@:@");

    if ([objectText respondsToSelector:@selector(ocMethod:)]) {
        
        NSLog(@"Yes, objectText respondsToSelector:@selector(ocMethod:)");

    }else{
        NSLog(@"sorry");
    }
    int a = (int)[objectText ocMethod:@"我是一个OC的method,C函数实现"];
    NSLog(@"a:%d", a);
    
}
#warning c方法
int cfunction(id self, SEL _cmd, NSString *str) {
    NSLog(@"---%@", str);
    return 10;//随便返回个值
}


-(void)twoParam{
    
    CustomClass *objectText = [[CustomClass alloc]init];
    class_addMethod([CustomClass class], @selector(ocMethodA::), (IMP)cfunction2, "i@:@@");
    if ([objectText respondsToSelector:@selector(ocMethodA::)]) {
        NSLog(@"yes");
    }else{
        
        NSLog(@"no");
    }

    int num = (int) [objectText ocMethodA:@"第一参数":@"第二个参数"];
    NSLog(@"a:%d", num);

}

int cfunction2(id self, SEL _cmd ,NSString *str,NSString *str1){
    
    NSLog(@"%@ %@",str,str1);
    
    return 20;
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}



@end


VS2019集成AddressSanitizer:C++内存错误检测实战指南 在C++开发中,内存管理是核心挑战之一,涉及堆、栈和全局变量的分配与释放。其原理在于程序运行时对内存地址的访问必须严格遵循分配边界和生命周期规则,否则会导致缓冲区溢出、释放后使用等严重错误。这类问题的技术价值在于直接影响程序的稳定性、安全性和性能,是高质量软件必须攻克的基础难题。应用场景广泛,从嵌入式系统到大型服务器软件,都需要可靠的内存错误检测机制。AddressSanitizer(ASan)作为一种编译时插桩技术,通过影子内存和运行时检查,能精准定位堆缓冲区溢出、释放后使用等隐蔽错误。本文以Visual 阅读详情

相关推荐

Day01 Geant4学习

​ 用来记录粒子在每个step中的信息的,例如位置,能量,动量.例如,假设每一个粒子都有一个属于自己的id,会记录自己的轨迹状态信息就是track,当他发生反应时,就会产生新的id。​ 最终在新建的build文件夹中的vis.mac文件中设置,是自带的,如果有更高的需求可以自己去更改,但是一般都是写好的,设置好了图形界面的一些东西,呈现的自己建模的图形界面多大,需不需要网格什么的。从反应到结束的过程,其中也包括它产生的刺激粒子的反应到结束的过程,成为一个事件event。

LXS_357的博客 933

[golang学习2]Golang的runtime学习1

Golang的runtime理解 最近在学习Go语言开发的过程中,对涉及到Go Runtime的运行机制,故找了一些资料进行学习。 什么是Golang的runtime 先来看个go程序架构图: golang程序并没有像java一样自带虚拟机,而是和c类似。 每一个go程序都带有一个runtime,runtime负责和底层操作系统交互。这使得go语言运行效率理论上会比java、python高。 r...

oRewrite的博客 476

2023最新版kali安装教程

2023最新版kali安装教程 打开kali官网(https://www.kali.org/),下载kali镜像

qq_46346209的博客 2万+

iOS——Runtime学习(1)

iOS——Runtime学习(1) 动态语言和静态语言 了解Runtime,首先要知道动态语言和静态语言的区别: 静态类型语言,是指数据类型的检查以及函数的调用是在运行前(如编译阶段)做的。如C语言,编译阶段就要决定调用哪个函数,如果函数未实现就会编译报错。 动态类型语言,是指数据类型的检查和函数的调用是在运行时做的。运行时新的函数可以被引进,已有的函数可以被删除。 OC就是一门动态语言,...

u012380572的博客 253

告别Keil手动分区!用CubeMX+VS Code一键生成带Bootloader的STM32 OTA工程

本文详细介绍了如何利用STM32CubeMX和VS Code实现STM32 OTA工程的自动化构建,告别传统Keil手动分区的繁琐流程。通过图形化配置Flash分区、自动生成链接脚本以及实现Bootloader跳转逻辑,开发者可以高效完成远程升级功能开发,显著提升嵌入式开发效率。

weixin_33720956的博客 389

74HC138译码器的原理和使用

A0,A1,A2为3位二进制加权地址输入端口,A2A1A0顺序组成的3位2进制数对应的十进制数x控制使能端口Yx';例如当A2A1A0 = 101 时,其他门输出端全为高电平,只有Y5'为低电平。 Y0-Y7为8个输出端口,其输出电平由A0,A2,A3,E1,E2,E3决定。

diksan的博客 6万+

开始学习WP8.1 runtime

WP8(SilverLight): 菜单栏:

TinyRock87的专栏 403

1、使用Spark SQL查询Databricks:全面指南

本博客全面介绍了如何使用Spark SQL在Databricks平台上进行高效的数据查询与分析。内容涵盖SQL基础操作、数据过滤、复杂查询技巧、简单与高级计算、数据聚合、日期处理等核心主题,适合数据分析师、开发人员及SQL学习者。通过逐步讲解和实用示例,帮助读者掌握从入门到高级的SQL技能,并提供学习路径建议和免费代码资源,助力实际数据分析工作。

redis7keeper的博客 90

onnx runtime文档学习1-介绍与架构

ONNX Runtime是由微软公司开发和维护的深度学习推理框架。是一个跨平台的机器学习模型加速器,具有灵活的接口,可以集成硬件特定的库。ONNX Runtime 可以与 PyTorch、Tensorflow/Keras、TFLite、scikit-learn 和其他框架中的模型一起使用。

青椒的学习笔记 4548

华为OD机考双机位C卷 - 简单的解压缩算法 (Java & Python & JS & GO & C++ & C)

华为OD机考双机位C卷 - 简单的解压缩算法 , 提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。

算法大师! 129

【Frida Android】实战篇8:客户端证书认证绕过 Hook 教程

通过重写类的方法,自定义证书校验逻辑;利用配置文件,从系统层面管理证书信任策略;以及通过 OkHttp 框架提供的方法,实现证书的强绑定校验。这些内容主要围绕客户端如何验证服务端证书的合法性展开。客户端证书认证。当 APK 预置了客户端证书,并且服务端会对客户端证书进行校验时,传统的中间人攻击方式将面临新的挑战。我们将深入分析这种场景的工作原理,并详细介绍如何通过技术手段获取客户端证书、配置中间人工具,最终成功实现抓包分析。

水滴石穿 1426

iOS学习笔记:runtime(1)

runtime(1):点击打开链接

盛夏LL 465

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

IOS: runtime 学习(1)

相关定义 // 类中的一个方法 typedef struct objc_method *Method; // 实例变量 typedef struct objc_ivar *Ivar; // 类别Category typedef struct objc_category *Category; // 类中声明的属性 typedef struct objc_property *objc_pr...

u012890196的专栏 387

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Runtime学习笔记1--基础概念篇

前言看了下ReactiveCocoa的源码发现RAC在给系统类添加rac_扩展的时候用到了很多Runtime层面的API,所以打算先从Runtime基础开始学起并纪录下来。由于网上关于Runtime的描述已经很详尽,所以就拾人牙慧,以作学习之用。概念Runtime是用C和汇编写的动态库,其将Objective-C跟C紧密结合起来,顾名思义,即“跑的时候“,其作用是: 让我们可以在系统在运行时创建、检

区先生的杂谈 580

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

学习笔记1:归档解档、runtime

系统类型 1.归解档字符串 两者都需要先拼出文件路径:归档 NSString *path = [docPath stringByAppendingPathComponent:@"myStr"]; [NSKeyedArchiver archiveRootObject:@"我是字符串" toFile:path]; 解档 NSString *path = [docPath stringByAppendi

随风而逝---kirito 389

【学习笔记】Vue3源码解析:第四部分- runtime-dom(1)

第四部分-:(对应课程的第24-26节)

youyoufenglai的博客 1520

k8s学习-CKS真题-Runtime设置gVisor_安装gvisor(1)

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!【完整版领取方式在文末!!】93道网络安全面试题需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)内容实在太多,不一一截图了最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助

2401_84264662的博客 788

《ArcGIS Runtime for Android 100.2.1学习笔记》三:使用LocationDisplay实现定位

      在ArcGIS Runtime for Android100里新增了一个类LocationDisplay,其官方解释为:管理当前位置在显示地图里的展示,包括当前位置信息、符号、以及随地图的平移、旋转、缩放等进行自动变化。也就是有了这个类,不仅可以获取当前位置信息进行定位,也可以将位置信息展示出来。1、加载地图 //定义一个MapView对象 public MapView ...

wnag_qing_zhong的博客 3243

ArcGIS RunTime SDK For ios 10.1.1学习笔记(一)HelloMapWorld

ufolr原创,转载请注明: 转载自ufolr的博客 原文连接:http://blog.youkuaiyun.com/ufolr/article/details/8876176          由于官方博客的教程是针对2.3版本SDK,对于最新的10.1.1版本并不完全适用,而作为一个新手,又很难知道如何处理新旧版本使用的差别,所以我写这片文章一方面方便新手,一方面当作笔记方便自己,本人

一个狂徒的点滴记录、 3012

【亲测免费】 ONNX Runtime Windows x64 GPU 1.14.0

ONNX Runtime Windows x64 GPU 1.14.0 【下载地址】ONNXRuntimeWindowsx64GPU1.14.0 本仓库提供了ONNX Runtime的Windows x64平台专用GPU版本,适用于那些拥有CUDA 11.0以上版本的64位Windows系统。ONNX Runtime是一...

gitblog_09726的博客 1575

ONNX Runtime for Linux x64 1.14.0

ONNX Runtime for Linux x64 1.14.0 去发现同类优质开源项目:https://gitcode.com/ 这是一个ONNX Runtime的Linux x64版本资源文件,版本号为1.14.0。ONNX Runtime是一个开源的跨平台机器学习推理引擎,由微软提供。它能够加速神经网络的推理过程,支持多种流行的深度学习框架模型转换和执行。 此压缩文件包含了适用于Linux...

gitblog_06772的博客 391

Kubernetes对象深入学习之一:概览

kubernetes开发过程中,对象是个重要概念,与其相关的接口、实现、API都经常被用到,《Kubernetes对象深入学习》系列会陪伴大家,一同深入的系统的学习对象相关知识

程序员欣宸的博客 1479

【R 4.5深度学习集成稀缺资源】:独家适配Hugging Face Transformers v4.45的R wrapper(含ONNX Runtime 1.18量化支持)

R 4.5深度学习框架集成新突破:提供Hugging Face Transformers v4.45专属R wrapper,原生支持ONNX Runtime 1.18量化推理,适用于本地部署与边缘AI场景。轻量、高效、兼容性强,值得收藏。

BreakNexus的博客 247

java基础类库学习(一.1)Scanner/System/Runtime/Object/Objects

合格的java程序员,需要掌握java se中70%的类,也就是2800个类的熟练使用 jvm运行字节码程序的过程?程序是如何运行的? 一个类若想运行,则该类中一定包含主方法public static void main(String [] args){} 我们知道这是程序运行的入口,那么为什么只有这个才是程序运行的入口呢? java程序运行:字节码文件经过解释器的解释运行在jvm虚拟机器...

Mar.三月 241

runtime1/runtime网络编程指南:UDP客户端与服务器开发最佳实践

想要掌握异步网络编程的终极技巧吗?本文将为你详细解析如何使用runtime1/runtime构建高性能的UDP客户端与服务器。作为一个强大的异步运行时库,runtime为Rust开发者提供了简单、快速且免费的异步编程体验。无论你是网络编程新手还是经验丰富的开发者,这篇完整指南都将帮助你快速上手UDP网络通信的最佳实践。 ## 📡 什么是runtime1/runtime? runtime是一个

gitblog_09806的博客 976
上一篇: 图标抖动
下一篇: Runtime 运行时定义
kintan哥
博客等级 码龄12年 11粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值