iOS runtime

news/2024/9/23 10:16:47/

—参考文章—

  • 暂时没有

一、如何在Xcode中使用runtime

Xcode默认是不建议开发者使用runtime的,所以在Xcode直接使用runtime的语法是会报错误的。
如果要在Xcode中使用runtime的语法,是需要配置一下才可以使用,配置方法如下图:

  • 首先在1的位置搜索Enable strict
  • 默认是选中Yes的,然后只要选中No即可,然后在项目中使用runtime语法就不会报错误了

配置runtime使用开关

二、几个常用的语法

  • 获取当前对象的所有方法
/* 获取对象的所有方法 */
-(NSArray *)getAllMethods
{NSMutableArray *tempMuArr = [[NSMutableArray alloc] init];unsigned int methCount = 0;Method *meths = class_copyMethodList([self class], &methCount);for(int i = 0; i < methCount; i++) {Method meth = meths[i];SEL sel = method_getName(meth);const char *name = sel_getName(sel);NSLog(@"%s", name);[tempMuArr addObject:[NSString stringWithFormat:@"%s", name]];}free(meths);return [tempMuArr copy];
}
  • 获取当前对象的所有属性
/* 获取对象的所有属性 */
- (NSArray *)getAllProperties
{u_int count;objc_property_t *properties  = class_copyPropertyList([self class], &count);NSMutableArray *propertiesArray = [NSMutableArray arrayWithCapacity:count];for (int i = 0; i < count ; i++){const char* propertyName =property_getName(properties[i]);[propertiesArray addObject: [NSString stringWithUTF8String: propertyName]];}free(properties);return propertiesArray;
}
  • 调用objc_msgSend方法
//调用对象方法
objc_msgSend(tempIamge, @selector(drawInRect:), CGRectMake(0, 0, 1242, 2208));//调用类方法
//方式1
UIImage *tempImage = ((UIImage *(*)(id, SEL, NSString *)) objc_msgSend)((id)[UIImage class], @selector(imageNamed:), @"test.jpg");
//方式2
UIImage *tempImage = ((UIImage *(*)(id, SEL, NSString *)) objc_msgSend)((id)objc_getClass("UIImage"), sel_registerName("imageNamed:"), @"test.jpg");

http://www.ppmy.cn/news/1437206.html

相关文章

Apache Doris 基于 Workload Group 的负载隔离能力解读|Deep Dive

作者&#xff1a;SelectDB 技术团队 现如今企业的数据查询需求在不断增多&#xff0c;在共享同一集群时&#xff0c;往往需要同时面对多个业务线或多种分析负载的并发查询。在有限的资源条件下&#xff0c;查询任务间的资源抢占将导致性能下降甚至集群不稳定&#xff0c;因此负…

java:Http协议和Tomcat

HTTP协议 Hyper Text Transfer Protocol 超文本传输协议,规定了浏览器和服务器之间数据传输的规则 特点: 基于TCP协议,面向连接,安全 基于请求响应模型:一次请求对应一次响应 HTTP协议是无状态协议,对事务的处理没有记忆能力,每次请求-响应都是独立的. 优点 速度较快 …

WPF —— lCommand命令实例

首先在标签页面设置一个Button按钮 <Button Width"100" Height"40" Content"测试" ></Button> 1 创建一个类 继承于ICommand这个接口&#xff0c; 这个接口一般包含三部分&#xff1a; 俩个方法&#xff1a;一个判断指令是不是…

点云从入门到精通技术详解100篇-基于点云数据的工件三维重建

目录 知识储备 点云重建 1 几何重建 2、Delaunay算法 3 基于隐式曲面的隐式方法

基于Springboot的在线动漫信息平台

基于SpringbootVue的在线动漫信息平台的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页 热门动漫 文章专栏 会员分享 论坛信息 动漫资讯 后台登录 动漫分类管…

SpringMVC请求和响应方式

1. SpringMVC的数据响应 1.1 SpringMVC的数据响应方式 页面跳转&#xff1a; 直接返回字符串通过ModelAndView对象返回 回写数据&#xff1a; 直接返回字符串返回对象或集合 1.2 页面跳转 - 直接返回字符串 1.3 页面跳转 - 通过ModelAndView对象返回 1.4 页面跳转 - 传递参数…

新媒体运营-----短视频运营-----PR视频剪辑----转场与过渡

新媒体运营-----短视频运营-----PR视频剪辑-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/138079659 文章目录 1. 效果控件和图片过渡转场1.1 效果控件针对图片的操作1.2 通过效果控件过渡转场 2. 默认的视频转场过渡3. 转场插…

javascript使用setTimeout函数来实现仅执行最后一次操作

在JavaScript中&#xff0c;setTimeout函数用于在指定的毫秒数后执行一个函数或计算表达式。它的主要用途是允许开发者延迟执行某些代码&#xff0c;而不是立即执行。 当我们想要确保仅最后一次更新UI时&#xff0c;我们可以使用setTimeout来合并多次连续的更新请求。具体做法…