iOS-Main-运行时-获取对象的属性数组

简单介绍一下Runtime-运行时:

  • 运行时是一种面向对象的编程语言的运行环境,类似于java的虚拟机
  • OC最主要的特点就是在程序运行时,以发送消息的方式调用该方法
  • 运行时是OC的核心,Objective-C即使基于运行时的
  • 参考文档:http://nshipster.cn/swift-objc-runtime/

利用clang生成中间代码

  • 进入终端
  • 输入以下命令:
    $ clang -rewrite-objc main.m
  • 可以将OC代码重写成C++代码

导图:

iOS-Main-运行时-获取对象的属性数组_第1张图片
底层OC

iOS-Main-运行时-获取对象的属性数组_第2张图片
使用场景

运行时获取对象的属性数组

  1. 创建项目,设置类Person并声明属性age,name,如下图:


    iOS-Main-运行时-获取对象的属性数组_第3张图片
    创建项目
  1. 创建一个继承于NSObject的分类Runtime。并导入运行时的头文件。并声明方法,如下图:


    iOS-Main-运行时-获取对象的属性数组_第4张图片
    导入运行时的头文件并声明方法

    上述,运行时的头文件应该导入到.m中。

  2. 实现分类的方法
    测试
    iOS-Main-运行时-获取对象的属性数组_第5张图片
    1

    iOS-Main-运行时-获取对象的属性数组_第6张图片
    2

    iOS-Main-运行时-获取对象的属性数组_第7张图片
    3

    根据运行时,我们可以获取继承于NSObject调用,该方法的类,属性值有两个。
    假如,改成三个:
    iOS-Main-运行时-获取对象的属性数组_第8张图片
    改成三个

    问题:
    我们看见copy,就要释放,看下图:
    iOS-Main-运行时-获取对象的属性数组_第9张图片
    必须释放
  3. 获取属性名称
    具体步骤,请看下图:
    iOS-Main-运行时-获取对象的属性数组_第10张图片
    改正

    iOS-Main-运行时-获取对象的属性数组_第11张图片
    打印结果

    这样已经可以动态的获取了属性的名称
    验证:
    iOS-Main-运行时-获取对象的属性数组_第12张图片
    验证:

    5)实现目标
    再来看我们的目标-获得一个属性的数组。

    iOS-Main-运行时-获取对象的属性数组_第13张图片
    完成

    整体逻辑
    iOS-Main-运行时-获取对象的属性数组_第14张图片
    整体逻辑

你可能感兴趣的:(iOS-Main-运行时-获取对象的属性数组)