iOS--RunTime运行时

原创 2016年08月29日 16:30:01

1.给分类增添成员变量

#import "ViewController.h"
#import <objc/message.h>
@implementation ViewController(UIButton)

static double HeightKey;

- (void)setHeight:(double)height {
    objc_setAssociatedObject(self, &HeightKey, @(height), OBJC_ASSOCIATION_ASSIGN);
}

- (double)height {
    return [objc_getAssociatedObject(self, &HeightKey) doubleValue];
}

@end

2.遍历一个类的所有成员变量

#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#import "Person.h"
#import <objc/runtime.h>
int main(int argc, char * argv[]) {
    @autoreleasepool {

        unsigned int count = 0;

        // 获得Person类中的所有成员变量
        Ivar *ivars = class_copyIvarList([Person class], &count);

        // 遍历所有成员变量
        for (int i = 0; i<count; i++) {
            Ivar ivar = ivars[i];

            // 获得成员变量名字
            const char *name = ivar_getName(ivar);

            // 获得成员变量类型
            const char *type = ivar_getTypeEncoding(ivar);
        }

        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

3.
1.runtime简称运行时,oc就是运行时机制,最主要的是消息机制
2.对于oc属于动态调用,只有在运行时才会根据函数的名称找到对应的函数
3.类名调用方法本质上是将类名转换成类对象
4.objc_msgSend(p,@selector(eat))

版权声明:欢迎转载!

iOS--Runtime

原文传送门  http://blog.csdn.net/lizhongfu2013/article/details/9496705 IOS高级开发~Runtime(一) IOS高级开发~Ru...
  • Le_Wrynn
  • Le_Wrynn
  • 2016年02月21日 21:10
  • 192

iOS--runtime / Swizzle

什么是 runtime ? RunTimec又称运行时。就是系统在运行的时候的一些机制。 是一套底层的 C 语言 API (包含很多强大实用的 C 语言数据类型、 C 语言函数) 平...
  • superchaoxian
  • superchaoxian
  • 2015年04月07日 14:49
  • 580

得到运行时类的泛型类型。

//得到反射类型 private Class getGenericType(){ if(clazz == null){ Type type = super.getClass().get...
  • is_zhoufeng
  • is_zhoufeng
  • 2012年11月29日 16:04
  • 2726

Java虚拟机运行时数据区域

Java虚拟机在执行Java程序的过程中会将其管理的内存划分为若干个不同的数据区域,这些区域有各自的用途,及创建和销毁的时间,有些区域随虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束来建...
  • NMS312
  • NMS312
  • 2014年07月06日 21:26
  • 3156

运行时类型信息

RTTI(在运行时,识别一个对象的类型)可以在程序运行时发现和使用类型信息,这就打破了只能在编译期执行面向类型的操作的限制。使用它,可以查询某个Shape引用所指向的对象的确切类型,然后选择或者剔除特...
  • u012135300
  • u012135300
  • 2016年05月04日 22:30
  • 759

JVM 运行时数据区

翻译人员: 铁锚 翻译时间: 2013年11月11日 原文链接: JVM Run-Time Data Areas 参考地址: JVM运行时是什么样子? 这是阅读JVM规范时的笔记,...
  • renfufei
  • renfufei
  • 2013年11月11日 20:48
  • 5865

运行时验证概述

来源自我的博客 http://www.yingzinanfei.com/2017/02/01/yunxingshiyanzhenggaishu/运行时验证的概述本文将简要介绍运行时验证技术。先给出...
  • yingzinanfei
  • yingzinanfei
  • 2017年02月01日 09:48
  • 570

java学习之编译时类型(前期绑定)和运行时类型 (后期绑定、动态绑定、运行时绑定)

编译时类型和运行时类型:     Java的引用变量有两个类型,一个是编译时类型,一个是运行时类型,编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行...
  • CrystalDestiny
  • CrystalDestiny
  • 2013年10月25日 11:49
  • 2867

java虚拟机 内存运行时数据区域

java虚拟机运行时数据区域广义上可以分为程序计数器 堆 栈和直接内存。 程序计数器(线程私有) 可以看作当前线程所执行的字节码的行号指示器。众所周知,多线程是争抢CPU执行时间的,轮流切换并...
  • zhongyuan_1990
  • zhongyuan_1990
  • 2017年01月13日 18:32
  • 498

JVM-String常量池与运行时常量池

Start with JVM 先分析一波常量池-Constant Pool
  • Sugar_Rainbow
  • Sugar_Rainbow
  • 2017年03月29日 21:44
  • 4302
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS--RunTime运行时
举报原因:
原因补充:

(最多只允许输入30个字)