运用到runtime需要导入相应的头文件

#import <objc/runtime.h>

1.获取私有成员变量名

    unsigned int count;//需要导入头文件:你要导出的私有成员的类Ivar *ivars = class_copyIvarList([UIButton class], &count);for (NSInteger i = 0; i < count; i ++) {Ivar ivar = ivars[i];const char *name = ivar_getName(ivar);NSString *ocname = [NSString stringWithUTF8String:name];NSLog(@"%ld====%@",i,ocname);}//释放内存指针
    free(ivars);ivars = NULL;

打印的结果为:

2016-04-06 10:53:17.389 ZhangHongAd[851:211282] 0====_externalFlatEdge2016-04-06 10:53:17.389 ZhangHongAd[851:211282] 1====_contentLookup2016-04-06 10:53:17.389 ZhangHongAd[851:211282] 2====_contentEdgeInsets2016-04-06 10:53:17.390 ZhangHongAd[851:211282] 3====_titleEdgeInsets2016-04-06 10:53:17.390 ZhangHongAd[851:211282] 4====_imageEdgeInsets2016-04-06 10:53:17.390 ZhangHongAd[851:211282] 5====_backgroundView2016-04-06 10:53:17.390 ZhangHongAd[851:211282] 6====_floatingContentView2016-04-06 10:53:17.390 ZhangHongAd[851:211282] 7====_contentBackdropView2016-04-06 10:53:17.392 ZhangHongAd[851:211282] 8====_imageView2016-04-06 10:53:17.392 ZhangHongAd[851:211282] 9====_titleView2016-04-06 10:53:17.392 ZhangHongAd[851:211282] 10====_initialized2016-04-06 10:53:17.392 ZhangHongAd[851:211282] 11====_lastDrawingControlState2016-04-06 10:53:17.392 ZhangHongAd[851:211282] 12====_selectGestureRecognizer2016-04-06 10:53:17.392 ZhangHongAd[851:211282] 13====_buttonFlags2016-04-06 10:53:17.392 ZhangHongAd[851:211282] 14====_effectiveContentView2016-04-06 10:53:17.393 ZhangHongAd[851:211282] 15====_maskAnimationView2016-04-06 10:53:17.393 ZhangHongAd[851:211282] 16====_selectionView2016-04-06 10:53:17.393 ZhangHongAd[851:211282] 17====_lazyTitleViewFont2016-04-06 10:53:17.393 ZhangHongAd[851:211282] 18====_contentConstraints2016-04-06 10:53:17.393 ZhangHongAd[851:211282] 19====_internalTitlePaddingInsets

打印结果

2.获取类的私有属性名

    objc_property_t *properties = class_copyPropertyList([UIButton class], &count);for (NSInteger i = 0; i < count; i ++) {objc_property_t property = properties[i];const char *name = property_getName(property);NSString *ocname = [NSString stringWithUTF8String:name];NSLog(@"%ld====%@",i,ocname);}//释放内存指针
    free(properties);properties = NULL;

这个方法跟获取私有成员变量名差不多,直接上代码

2016-04-06 11:06:29.451 ZhangHongAd[859:213999] 0====contentEdgeInsets
2016-04-06 11:06:29.451 ZhangHongAd[859:213999] 1====titleEdgeInsets
2016-04-06 11:06:29.451 ZhangHongAd[859:213999] 2====reversesTitleShadowWhenHighlighted
2016-04-06 11:06:29.451 ZhangHongAd[859:213999] 3====imageEdgeInsets
2016-04-06 11:06:29.451 ZhangHongAd[859:213999] 4====adjustsImageWhenHighlighted
2016-04-06 11:06:29.451 ZhangHongAd[859:213999] 5====adjustsImageWhenDisabled
2016-04-06 11:06:29.451 ZhangHongAd[859:213999] 6====showsTouchWhenHighlighted
2016-04-06 11:06:29.451 ZhangHongAd[859:213999] 7====tintColor
2016-04-06 11:06:29.452 ZhangHongAd[859:213999] 8====buttonType
2016-04-06 11:06:29.452 ZhangHongAd[859:213999] 9====currentTitle
2016-04-06 11:06:29.453 ZhangHongAd[859:213999] 10====currentTitleColor
2016-04-06 11:06:29.453 ZhangHongAd[859:213999] 11====currentTitleShadowColor
2016-04-06 11:06:29.453 ZhangHongAd[859:213999] 12====currentImage
2016-04-06 11:06:29.453 ZhangHongAd[859:213999] 13====currentBackgroundImage
2016-04-06 11:06:29.453 ZhangHongAd[859:213999] 14====currentAttributedTitle
2016-04-06 11:06:29.453 ZhangHongAd[859:213999] 15====titleLabel
2016-04-06 11:06:29.453 ZhangHongAd[859:213999] 16====imageView
2016-04-06 11:06:29.453 ZhangHongAd[859:213999] 17====_currentImageColor
2016-04-06 11:06:29.453 ZhangHongAd[859:213999] 18====_externalFlatEdge
2016-04-06 11:06:29.453 ZhangHongAd[859:213999] 19====_wantsAccessibilityUnderline
2016-04-06 11:06:29.453 ZhangHongAd[859:213999] 20====_contentConstraints
2016-04-06 11:06:29.453 ZhangHongAd[859:213999] 21====_internalTitlePaddingInsets
2016-04-06 11:06:29.455 ZhangHongAd[859:213999] 22====hash
2016-04-06 11:06:29.455 ZhangHongAd[859:213999] 23====superclass
2016-04-06 11:06:29.455 ZhangHongAd[859:213999] 24====description
2016-04-06 11:06:29.455 ZhangHongAd[859:213999] 25====debugDescription

打印结果

获取了系统类的私有成员变量跟属性,我们就可以用KVC去改变系统的属性名,用自定义的控件覆盖系统的控件。

3.获取类的全部方法名

class_copyMethodList(__unsafe_unretained Class cls, unsigned int *outCount)

4.获取类的全部协议名

class_copyProtocolList(__unsafe_unretained Class cls, unsigned int *outCount)

转载于:https://www.cnblogs.com/CrazySL/p/5358479.html

初窥runtime的作用相关推荐

  1. 【重点】初窥Linux 之 我最常用的20多条命令

    [重点]初窥Linux 之 我最常用的20多条命令 玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我 ...

  2. [基础] AHK函数对象初窥 ① _实例2_实际可用版

    [基础] AHK函数对象初窥 ① _实例2_实际可用版 ;# 母文章 https://zhuanlan.zhihu.com/p/48977298;;;;;;;;;;;;;;;;;;;;;;;;;;;; ...

  3. Three.js初窥

    随着当今时期前端地愈来愈普及,页面实现的效果真的是越来越棒! 随着数字图像处理.人工智能技术的发展,展示给用户的视觉效果便不局限于平面的2D视觉效果,开始注重于全方位的3D立体展示效果,力求对于商品的 ...

  4. 人工智能+音乐的探索:从洛天依到小冰初窥歌唱合成

    歌唱合成技术是将乐谱信息和歌词转换为歌唱语音的技术.相较于语音合成(TTS),歌唱合成有更丰富的输入(音高.音符持续时间),并要求输出的人声更有感情.变化和起伏,技术上更为困难.与语音合成任务类似,歌 ...

  5. iOS7新特征汇总[05]初窥UIKit动力(UIKit Dynamics)

    本文转载自:破船之家 本文地址:iOS7新特征汇总[05]初窥UIKit动力(UIKit Dynamics) QQ20130615-6 此图来此WWDC视频 小引 通过之前的4篇文章,笔者把iOS7中 ...

  6. OBJECT_METHOD初窥

    一.  背景:Windows NT 的对象机制 Windows NT系统将各种资源以对象的方式进行组织和管理.虽然Windows NT内核使用C语言和汇编语言编写的,本身并未使用到C++中的面向对象机 ...

  7. 并发编程-01并发初窥

    文章目录 引言 思维导图 基础知识构建 涉及的知识点一览 高并发处理思路与手段一览 并发初窥 概念 并发问题模拟 代码 引言 说来惭愧,一直没有系统的梳理过并发编程的知识,这次借着学习_Jimin_老 ...

  8. java aspectj_初窥AspectJ

    AspectJ可以说是Java中当之无愧的黑魔法.说它是黑魔法,一方面是因为它很强大,能够解决一些传统编程方法论解决不了的问题,而另一方面,它也相当的晦涩,有着比较陡峭的学习曲线. 本文将带大家探索下 ...

  9. Scrapy 1.4 文档 01 初窥 Scrapy

    初窥 Scrapy Scrapy 是用于抓取网站并提取结构化数据的应用程序框架,其应用非常广泛,如数据挖掘,信息处理或历史存档. 尽管 Scrapy 最初设计用于网络数据采集(web scraping ...

最新文章

  1. vue + skyline 搭建 一个开发环境
  2. 解读Java Class文件格式
  3. STM32F103CB 芯片FLASH DOWNLOAD编程地址范围设置相关问题记录
  4. 两个简单的python入门小游戏
  5. 在java中图片随机播放_java-以相同顺序随机播放多个文件
  6. mysql自增id获取失败
  7. easyexcel多个sheet导入_Java中Easypoi实现excel多sheet表导入导出功能
  8. python程序员工资-Python工资高还是Java?
  9. ubuntu16.04 Detectron目标检测库配置(包含GPU驱动,Cuda,Caffee2等配置梳理)
  10. 杭州最美的骑行路线在此!趁着春天蹬车撒欢去!
  11. Java【案例6-2】 学生管理系统
  12. oracle 表名 添加注释
  13. 大数据可视化python_大数据分析之Python数据可视化的四种简易方法
  14. 【车牌识别】模板匹配新能源车牌识别【含Matlab源码 865期】
  15. UG编程-适合新手的详细讲解
  16. 「GoCN酷Go推荐」​QQ机器人 go-cqhttp
  17. 计算机和材料学的关系,考研专业解析系列之材料科学与工程专业
  18. i9级E52450处理器_给你的电脑私装蓝牙WIFI?华硕皇帝级主板增加WIFI模块上I9处理器...
  19. 重启windows资源管理器
  20. 羽毛球之双打反手发网前小球后的注意事项

热门文章

  1. 织梦直接写php标签,非常实用的织梦dede所有标签调用方法大全 .
  2. mysql3.0数据库修复_mysql3.0监控mysql数据库
  3. android:layout_gravity和android:gravity属性的区别
  4. flux服务器推消息,在Spring WebFlux响应式处理程序中发送JMS消息:它是否阻塞?
  5. Python测试框架pytest(01)简介、安装、快速入门
  6. Python游戏开发pygame模块,Python实现吃豆人,儿时的回忆
  7. 基于数据库数据增量同步_基于canal实现分布式数据同步
  8. js实现审批流_JavaScript实现审核流程状态的动态显示进度条
  9. mysql数据库管理系统的配置文件是_MySQL学习笔记_1_MySQL数据库管理系统概述
  10. ansible自动化运维(二)——环境部署及常用模块的使用