【第22期】观点:IT 行业加班,到底有没有价值?

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 Objective-C Runtime运行时类与对象的编译处理(写的很好,值得阅读)

Objective-C语言是一门动态语言,它将很多静态语言在编译和链接时期做的事放到了运行时来处理。这种动态语言的优势在于:我们写代码时更具灵活性,如我们可以把消息转发给我们想要的对象,或者随意交换一...

iOS运行时机制

http://my.oschina.net/panyong/blog/298631

iOS运行时runtime及相关Objective-C底层讲解

1.runtime体验 1.1.引言 运行时作为面试题中高阶问题必不可少的一个技能点。经常面试官会问道是否使用过运行时,以及如何使用运行时。并且我认为这个技术算是高阶开发里面一个投机的技巧,绝大多...

Objective-C 运行时Runtime

这是一篇译文,原文<a style="font-size: 12px; line-height: normal; color:

iOS运行时(Runtime)总结

声明本博客中文章不会在此处再更新,只会在微信公众号中更新,请关注微信公众号,以获取最新的学习资源和更多学习资源。本博文末尾有微信公众号二维码,扫一扫添加关注。 原文出自:微信公众号iOSDevSh...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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