240 发简信
IP属地:浙江
  • 我觉得专家这个词不够,应该是科学家

    App 启动提速实践和一些想法

    前言 启动是门面,好的印象也助于留存率提高。苹果也在系统启动上不断努力,提升用户体验,最新的 M1 宣传中还特别强调了翻盖秒开 macOS,可以看出其对极致启动速度的追求。这...

  • 120
    MachOView优化版

    MachOView 对官方MachoView进行优化、增加功能 改动变更: 解决解析MachO文件闪退 新增中文字符串解析,与Hooper工具的字符串展示一致 新增中文在iO...

  • 做了个实验,居然是对的。匪夷所思。

    iOS frame和Bounds 以及frame和bounds区别

    前言 最近和大家交流的时候发现很多初学者,当然也有一些有经验的iOS开发者对view的frame和bounds了解的都不是很透彻;尤其是bounds很多朋友都糊了,bound...

  • 1、compare函数没必要,一般会导致性能下降。
    2、不应该出现if result==true,逻辑表达式就是 if result 。

    归并排序

    时间复杂度 O(nlogn)会创建一个和原数组等长的临时数组,耗费了内存空间,以空间换时间。效率和希尔排序差不多 代码 demo地址:https://github.com/y...

  • 其中的数学原理就是
    1、证明快慢指针第一次相遇时,慢指针肯定没有走完1个闭环。并且快指针只比慢指针多走1个闭环。
    2、证明从表头到闭环入口的距离与相遇时到闭环入口的距离相等。
    假设表头到闭环入口距离为x,从闭环入口到相遇为y,那么“x+y+圈=2x+2y"
    圈=x+y,那么得到相遇时离闭环入口的距离就是x。所以,两边都是x。

    利用快慢指针获取链表闭环的入口

    创建两个指针分别指向头节点,同时创建一个临时空指针,当快慢指针相遇的时候(有闭环),将临时空指针指向头节点,同时继续继续下次循环,当慢指针和临时指针相遇,则此节点就是闭环入口...

  • 面试造火箭,开发搬砖。

    OC 消息转发机制

    首先我们看一下objc_msgSend它具体是如何发送消息: 首先根据receiver对象的isa指针获取它对应的class 优先在class的cache查找message方...

  • 1、log看 3个任务,分别在3个线程上执行,3个线程同时访问同一个semaphore,并且都会对其进行计算修改
    2、log打印的是
    “run task1
    run task2
    compelete task1
    compelete task2
    run task3
    compelete task3“

    为什么不是
    “run task1
    run task2
    compelete task1
    run task3 ///// 有一个任务结束,semaphore就信号加1,此时大于0,可以执行新的任务,为啥没有执行?
    compelete task2

    compelete task3“

    iOS GCD信号量

    A,B,C三个任务并发执行,但是C要等A,B执行完成之后再执行。 信号量: 两种方法 设定的信号值为2,先执行两个线程,等执行完一个,才会继续执行下一个,保证同一时间执行的线...

  • 1 iOS应用中限制最大并发数那里log打印是
    /*
    任务0 开始
    任务2 开始
    任务1 开始
    任务0 结束
    任务1 结束
    任务2 结束
    任务3 开始
    任务4 开始
    任务5 开始
    任务3 结束
    任务5 结束
    任务4 结束
    */
    为什么不是
    /*
    任务0 开始
    任务2 开始
    任务1 开始
    任务0 结束
    任务3 开始///?
    任务1 结束
    任务 4开始///?
    任务2 结束
    任务5 开始///?

    */
    不是维持最大并发3个吗?按你最开始解释的信号量的定义和使用,那么说有一个任务结束就应该立刻有一个新的任务开始才对呀?为什么要3个全部结束,才能继续第4个任务?

    iOS GCD信号量的使用

    什么是信号量 信号量是一种特殊的变量,访问具有原子性。 当信号量大于0时执行wait操作信号量会减1, 当信号量为0是,程序会等待,直到信号量大于0时,才继续执行。我们可以使...

  • 这是编译期的东西,这么做真的好吗?

    iOS判断系统版本

    iOS系统类库里面有一个Availability.h头文件,有一些宏定义。 这些宏定义可以判断当前系统版本是否是大于等于某个版本,例如: 判断系统版本是否在iOS 7.0以上...

  • 了解了基本原理之后,觉得这个库没多大意思,还是要预先约定跳转,仍然是抓跳转然后比对,所以,干脆自己抓跳转来比对不就完了。

    WebViewJavascriptBridge机制解析

    众所周知WebViewJavaScriptBridge是一个iOS/OSX 在UIWebViews/WebViews中obj-C和javascript发送消息的一个桥接。 W...