objc_getClass()返回的是本类(TestClass)的地址,object_getClass()返回才是 isa 指向的class。 在OC中,对象的类是 isa 指针决定的。isa 指针指向对象所属的类,同理类对象也是。object_getClass(currentClass) 会顺着 isa 的指向找到对应的类。
之前还真没关注过这些,看了作者说的问题,马上去翻了一下runtime的源码,的确如作者所说,
object_getClass的实现如下:Class object_getClass(id obj)
{
if (obj) return obj->getIsa();
else return Nil;
}
而objc_getClass函数最后调用的是getClass_impl函数,内部调用Class result = (Class)NXMapGet(gdb_objc_realized_classes, name);从这个gdb_objc_realized_classes表里用name这个key来查这个表,表里存储了运行时所有的类。
Runtime 中关于MetaClass的问题前阵子我学习了Objective-C中的Runtime库,最近我一个同学也在学习Runtime,和我看的是同一篇博客(博客地址),他学习过程时遇到了一个问题,就过来问我。 问...
前阵子我学习了Objective-C中的Runtime库,最近我一个同学也在学习Runtime,和我看的是同一篇博客(博客地址),他学习过程时遇到了一个问题,就过来问我。 问...
一、Objective-C发展史 Objective-C从1983年诞生,已经走过了30多年的历程。随着时间的推移,Objective-C支持很多特性,下面是几个重要的发展节...
在之前的一篇博客中,曾经用clang提供的库LibTooling编写了一个简单的导出iOS代码中函数调用关系图的工具,然而这种实现方式存在一些很明显的缺点: 在分析一个工程中...
前言 日常开发中,为一个已有的类(比如说不想影响其文件结构)、第三方库提供的类增加几个property,已经是十分常见且需要的操作了,有人会单独起草一份category.m文...
这个触发多次的原因是因为我写的测试代码不够严谨,后来我看到国外一个大佬已经有更优雅的写法了,不会造成多次触发,你可以去看一下,github上的watchdog库
关于线上检测主线程卡顿的问题大家好,一年多没有更新文章了,最大的原因我想是不知道该分享些什么,这次是在一个巧合下发现网上经常被人讨论的APP在线上状态如何检测到主线程的卡顿情况,我也稍微了解了一下,前段...
你好,偶尔看到,不过还是得提出意见,文中对互斥锁的理解可能有点错误,互斥是保证进程或者线程对临界区抢夺的解决办法,而从互斥中会分为各种锁方案,大体来说两种:会忙等待的互斥与不会忙等待的互斥,忙等待的比如自旋、perterson锁模型等,不会忙等待就有信号量等,非忙等待会挂起线程,但是这两者都叫互斥,并不是说只有挂起才叫互斥。
iOS中的各种锁在日常开发过程中,为了提升程序运行效率,以及用户体验,我们经常使用多线程。在使用多线程的过程中,难免会遇到资源竞争问题。我们采用锁的机制来确保线程安全。 线程安全 当一个线程...
@zenon 这个我的确还没有关注过
关于线上检测主线程卡顿的问题大家好,一年多没有更新文章了,最大的原因我想是不知道该分享些什么,这次是在一个巧合下发现网上经常被人讨论的APP在线上状态如何检测到主线程的卡顿情况,我也稍微了解了一下,前段...
@zenon UI主线程调用?是说卡顿么?如果是关于卡顿,大部分情况利用我本文前面所说的方案就可以检测到了,貌似腾讯的Bugly也是类似那样的机制
关于线上检测主线程卡顿的问题大家好,一年多没有更新文章了,最大的原因我想是不知道该分享些什么,这次是在一个巧合下发现网上经常被人讨论的APP在线上状态如何检测到主线程的卡顿情况,我也稍微了解了一下,前段...