zoukankan      html  css  js  c++  java
  • ios高级 runTime机制

    RunTime是一套比较底层的C语言API,属于C语言库。平时我们编写的ios代码,最终都会抓换成runtime的C语言代码。

    所谓的运行时机制,就是只在运行过程中才去确定对象的类型,方法等,利用RunTime机制可以在程序运行时动态的修改类、对象以及其属性方法等。

    其实在解析数据的时候用的-setValuesForKeysWithDictionary:就是运用了这个原理去遍历类的所有属性,

    在我们要使用运行时的地方,都需要包含头文件:#import<objc/runtime.h>,swift可以直接使用

    1.运用RunTime可以获取属性名,对应方法class_copyPropertyList,主义都是纯C语言API

    2.运用RunTime可以获取对象的所有属性名和属性值

    3.运用RunTime可以获取对象的所有方法名,对应方法class_copyMethodList

    4.运用RunTime可以获取对象的成员变量的名称,对应方法class_copylvarList,ivar_getName获取成员变量名称

    5.运用RunTime可以在运行时发送消息,对应方法objc_msgSend方法

    6.这点就神奇了,一般情况下Categrory是不可以扩展属性的,但是运用RunTime可以做到这一点,objc_setAssociatedObject

  • 相关阅读:
    Markdown学习
    二叉树的最近公共祖先
    javaCompiler简析
    自定义类加载器
    聚合和组合的区别
    拓扑排序
    C++ map和unordered_map
    静态文件加载路径
    文件上传
    jackson
  • 原文地址:https://www.cnblogs.com/fanxinguu/p/5488747.html
Copyright © 2011-2022 走看看