240 发简信
IP属地:北京
  • 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,和我看的是同一篇博客(博客地址),他学习过程时遇到了一个问题,就过来问我。 问...

  • 120
    Runtime 中关于MetaClass的问题

    前阵子我学习了Objective-C中的Runtime库,最近我一个同学也在学习Runtime,和我看的是同一篇博客(博客地址),他学习过程时遇到了一个问题,就过来问我。 问...

  • 漫谈Block

    一、Objective-C发展史 Objective-C从1983年诞生,已经走过了30多年的历程。随着时间的推移,Objective-C支持很多特性,下面是几个重要的发展节...

  • 120
    Drafter: 一个在iOS项目中分析代码结构的工具

    在之前的一篇博客中,曾经用clang提供的库LibTooling编写了一个简单的导出iOS代码中函数调用关系图的工具,然而这种实现方式存在一些很明显的缺点: 在分析一个工程中...

  • 老生常谈category增加属性的几种操作

    前言 日常开发中,为一个已有的类(比如说不想影响其文件结构)、第三方库提供的类增加几个property,已经是十分常见且需要的操作了,有人会单独起草一份category.m文...

  • 这个触发多次的原因是因为我写的测试代码不够严谨,后来我看到国外一个大佬已经有更优雅的写法了,不会造成多次触发,你可以去看一下,github上的watchdog库

    关于线上检测主线程卡顿的问题

    大家好,一年多没有更新文章了,最大的原因我想是不知道该分享些什么,这次是在一个巧合下发现网上经常被人讨论的APP在线上状态如何检测到主线程的卡顿情况,我也稍微了解了一下,前段...

  • 你好,偶尔看到,不过还是得提出意见,文中对互斥锁的理解可能有点错误,互斥是保证进程或者线程对临界区抢夺的解决办法,而从互斥中会分为各种锁方案,大体来说两种:会忙等待的互斥与不会忙等待的互斥,忙等待的比如自旋、perterson锁模型等,不会忙等待就有信号量等,非忙等待会挂起线程,但是这两者都叫互斥,并不是说只有挂起才叫互斥。

    iOS中的各种锁

    在日常开发过程中,为了提升程序运行效率,以及用户体验,我们经常使用多线程。在使用多线程的过程中,难免会遇到资源竞争问题。我们采用锁的机制来确保线程安全。 线程安全 当一个线程...

  • @zenon 这个我的确还没有关注过

    关于线上检测主线程卡顿的问题

    大家好,一年多没有更新文章了,最大的原因我想是不知道该分享些什么,这次是在一个巧合下发现网上经常被人讨论的APP在线上状态如何检测到主线程的卡顿情况,我也稍微了解了一下,前段...

  • @zenon UI主线程调用?是说卡顿么?如果是关于卡顿,大部分情况利用我本文前面所说的方案就可以检测到了,貌似腾讯的Bugly也是类似那样的机制

    关于线上检测主线程卡顿的问题

    大家好,一年多没有更新文章了,最大的原因我想是不知道该分享些什么,这次是在一个巧合下发现网上经常被人讨论的APP在线上状态如何检测到主线程的卡顿情况,我也稍微了解了一下,前段...

个人介绍
空持百千偈 不如吃茶去