240 发简信
IP属地:重庆
  • 毕业总结

    我是一名客户端APP开发工程师 选择报名学习“AI大模型微调训练营”训练营,主要有以下几个原因: 1. **提升技能**:虽然我的主要职责是客户端开发,但我对人工智能技术非常...

  • 蟹蟹分享,这样确实解决了ruby在m1上的问题,如果能说下原因会更好😁

    brew update 报错 "fatal: Could not resolve HEAD to a revision"

    报错 执行brew update命令时: 解决 % brew update --verbose 打开报错路径:% cd /opt/homebrew/Library/Taps/...

  • 120
    iOS-底层原理 31:LLVM编译流程 & Clang插件开发

    iOS 底层原理 文章汇总[https://www.jianshu.com/p/412b20d9a0f6] 本文主要是理解LLVM的编译流程以及clang插件的开发 LLVM...

  • 120
    浅谈我们开发生活中的那些圈

    我们常常会遇到或者被问到,NSRunloop到底是什么以及有什么作用?作为一枚iOS开发的老菜鸟......我是这样理解的: 如果我们子线程需要依赖另一事务(通常是另一线程)...

  • 120
    启动优化

    main函数之前,通过在Xcode里增加环境变量DYLD_PRINT_STATISTICS,可以让dyld输出pre-main之前的耗时。 可分为 1、dylib loadi...

  • 120
    @synchronized底层原理

    synchronized是一种防止多线程操作引起不安全问题的锁。使用起来比较方便,而且不用管理它的生命周期,时常会被程序猿用到,但它的性能却是最差的...... 为了更好的理...

  • 120
    dispatch_once源码分析

    GCD里的单例函数dispatch_once是我们经常会用到的,今天我们来稍做深入分析一下。GCD的源码都在libdispatch.dylib库里,这个库在libSystem...

  • 120
    应用程序加载

    我们知道main函数作为app的启动入口到didFinishLaunchingWithOptions函数可视为用户侧的启动完毕,但在main函数之前,系统也做了一些事情。本期...

  • 120
    动态方法决议和消息转发

    前面的文章我们谈到了objc_msgSend的快查找和慢查找流程,其实就是在缓存和类、父类、元类里去找imp,如果还是没找到,系统会给应用程序一次"补救"机会,在lookUp...

  • 120
    objc_msgSend慢查找流程分析

    上一节我们了解了快查找在没有从cache_t里找到imp的时候,会进入汇编里的CheckMiss,通过继续前进我们发现流程如下: CheckMiss —>__objc_msg...

  • 120
    objc_msgSend快查找流程分析

    我们知道所有的C代码都会被底层翻译成汇编语言,然后通过编译时再翻译成机器所能识别的语言。汇编里的逻辑是上层的基础,它能直接影响运行的效率,上一节我们谈到runtime的消息转...

  • 120
    浅谈runtime

    谈runtime前,我们先了解下编译时。 编译时:编译器将代码编译成机器可以识别的语言,在编译时候会检查语法。 运行时(runtime):将编译好的代码跑起来,加入内存中。与...

  • 120
    cache_t结构分析

    在之前的文章里,了解到了alloc的流程,isa指针的作用和意义,所有的类都来自objc_class,接下来我们继续了解objc_class里的另一重点cache_t 通过阅...

  • 120
    isKindOfClass和isMemberOfClass源码

    我们在开发过程中,常常需要判断一个对象(类)和另一个类的关系,这里会用到isKindOf和isMemberOf两个函数。下面来查看下两个函数的源代码: isKindOfCla...

  • 120
    用代码验证类方法的归属和存储(结合isa走位图)

    前面的文章我们讲到了如何通过isa指针以及指针位移的方式拿到实例方法和类方法,下面我们再通过代码来验证这一结果。在runtime里苹果提供了两个方法,这两个方法在方法替换的时...

  • 120
    类的结构分析之isa的作用

    大家都知道iOS开发中的所有类都来源于(继承自)NSObject,那NSObject来自于哪里?它的底层结构是什么?下面我们来分析下。 通过对源码分析得到: 我们常用的Cla...

  • 120
    关于isa的进阶理解

    通过Clang可以将.m文件翻译成.cpp文件,这里我们以main文件为例。 定位到main.m目录在terminal里输入命令:clang -rewrite-objc -f...