美文网首页
OC RunTime 学习一(Ivar)

OC RunTime 学习一(Ivar)

作者: AlexCorleone | 来源:发表于2017-08-15 16:53 被阅读88次

首先,贴出一小部分获取Ivar相关信息的代码,如下


使用OC RunTime获取类的成员变量 以上代码都是比较简单的,而且网上也有很多类似的代码,就不一一叙述。

注意坑来了!!!!!!!!!!!!!!!!!!!

在此次学习中唯一比较坑的是 object_getIvar 不支持非对象,具体错误

  ERROR:

 Theard1 :EXC_BAD_ACCESS(code 1, address);

解决办法:

unsigned char *stuffBytes = (unsigned char *)(__bridge void *)object;

double floatValue = *((double *)(stuffBytes + offset));

//stuffBytes  指向你要获取成员变量的对象, offset 该成员变量的地址偏移量

return @(floatValue);

这里使用了指针直接访问地址的方式通过偏移量来找到变量的存储地址,再通过类型强转,得到我们所需要的值。

参考文章:https://www.bignerdranch.com/blog/inside-the-bracket-part-5-runtime-api/

相关文章

  • OC RunTime 学习一(Ivar)

    首先,贴出一小部分获取Ivar相关信息的代码,如下 使用OC RunTime获取类的成员变量 以上代码都是比较简单...

  • iOS Runtime (二)

    runtime 的变量、属性和方法一、变量(Ivar)1.1 Ivar typedef objc_ivar * ...

  • iOS中成员变量的内存偏移量(ivar_offset)研究

    在学习Runtime的过程中,自己对objc_ivar中ivar_offset的作用不太理解,所以自己建立了一个工...

  • RUNTime操作基础

    runtime是OC比较底层的东西,而我们在学OC的时候很容易忽视runtime的学习,但是runtime的熟悉还...

  • Ivar objc_property_t Protocol解读

    Ivar声明 在objc-private.h文件中我们可以看到Ivar的声明结构: 在objc-runtime-n...

  • Runtime 的理解

    Runtime是深入学习OC的必经之路,所以花了一些时间研究了一下。 一、介绍RunTime(运行时): OC 语...

  • OC对象之旅 weak弱引用实现分析

    Runtime学习 -- weak应用源码学习 Runtime源码分析,带你了解OC实现过程。其中参考了大量的大神...

  • runtime之初见

    1、获取成员变量 Ivar表示成员类型。使用runtime需要导入,使用msgSe...

  • RunTime

    RunTime(运行时)是属于OC的一套底层实现,可以实现一些OC无法实现的底层操作。当初学习RunTime的时候...

  • 面试技巧攻克-OC高级特性

    作者:iOS大蝠 一、runtime机制 1、什么是runtime? runtime是OC的重要特性,使得OC语言...

网友评论

      本文标题:OC RunTime 学习一(Ivar)

      本文链接:https://www.haomeiwen.com/subject/dcrvrxtx.html