240 发简信
IP属地:浙江
  • 120
    一道OC综合题的反思

    前言 这是一道很有意思的题,题目来自群友,据说原题出自sunny。自以为是的解答这道题后,群友抛出一个新的问题,发现之前的解释行不通,遂有此文。 0x00 Code 你可能见...

  • 120
    对super关键字的小验证

    前言 你知道objc_msgSendSuper2(注意,不是objc_msgSendSuper)吗?如果不知道,这篇小文有必要看一下。 0x00 code 通过clang重写...

  • 120
    Objective-C对象成员变量是如何存取的

    之前写过一篇文章 Objective-C对象内存分布是怎样确定的,作为姊妹篇,两者配合食用口味更佳。 0x00 API 在runtime.h中可以找到如下接口: 这 6个函数...

  • 120
    一段weak代码引发的探索

    话不多说,直接看代码 0x00 code 看到输出结果后直接傻眼,脑子里迅速产生了几个疑问: 为什么输出的两个值不一样? 2是哪来的? 2后面是怎么变成1的? 0x01 de...

  • 120
    一文吃透autorelease

    全文速览 引子 activities与order的含义 _wrapRunLoopWithAutoreleasePoolHandler反汇编分析 autorelease在run...

  • 120
    Objective-C对象内存分布是怎样确定的

    对于一个类的实例变量来说,我们常说他的内存分布是isa + ivars。为什么内存是这样分布的?他是怎样确定的? 本文采用源码为当前最新:objc4-756.2与libmal...

  • 120
    TaggedPointer的推理与验证

    TaggedPointer是苹果推出的一种通过指针来存储少量数据的技术,可以有效避免内存浪费。 本文所用源码为objc4-756.2,macOS版本为10.15.2 Tagg...

  • 120
    通过lldb来说符号表绑定与fishhook

    fishhook,facebook开源的一个可以动态绑定Mach-O符号表的库。在程序启动时与运行时会通过dyld来绑定符号表(这里有非懒加载与懒加载之分),而fishhoo...

  • 120
    通过lldb与runtime再谈KVO

    KVO,苹果的一种键值监听实现技术。Key-Value Observing Implementation Details中有如下描述: Automatic key-value...

  • 120
    ProtocolKit 解读

    Swift支持协议方法的默认实现,而Objective-C不支持,突然想到多年前sunnyxx开源的 ProtocolKit ,顺手翻翻源码。 @defs __COUNTER...

  • 120
    C++中的引用推导

    导读 为什么说引用是别名 为什么引用作为形参可以修改实参的值 为什么引用初始化后无法指向其他对象 引用与指针对应的汇编代码 对引用的理解 为什么说引用是别名 从地址的角度来说...

  • 120
    C语言遐想(瞎想)

    导读 本文为笔者对C语言的一点思考,内容较杂,难免出错。如果阅读过程中发现什么问题,望不惜赐教。推荐顺序阅读,否则可能出现断片现象。 全文共包含以下几部分: 变量与地址 内存...

  • 让人挠头的C语言测试题

    前言 题目来自于https://kobes.ca/ctest ,共16题。 题目 解析:理解setjmp与longjmp后,本题很容易解答。首次调用setjmp时,会标记jm...

  • 120
    Swift中的指针大法

    本文概要 指针的种类及区别 不同指针间的相互转换及常用方法 各种类型的指针获取及应用 more than that 指针简介 打开开发文档,可以从Swift-->Swift ...

  • 一行代码自动适配空白页view(练手Demo)

    前言 Swift终于稳定了,抽空看了遍语法,写个Demo找手感。项目中经常会出现无数据或者无网页面需要适配,so... JKPlaceholderView来了。 表现 看点 ...

  • 有道理,可能是我想当然的认为下一段的segment内存地址一定大于上一段segment,如果是这样其实只要监测最后一段segment就可以了。

    dyld源码解读

    前言 dyld全称the dynamic link editor,即动态链接器,其本质是Mach-O文件,他是专门用来加载动态库的库。源码可以从这里下载,本文采用的是| d...

  • 120
    JavaScript Puzzlers详解

    前言 题目来自JavaScript Puzzlers,涉及的知识点很广,本文的解题过程尽量做到详细易懂。由于文章篇幅较长,推荐先马后看,相信一定可以在文章中找到不熟或者概念模...

  • 120
    JavaScript中的变色龙this

    前言 本文为学习过程中的this小节,作为一名JavaScript自学未成才的编程人员,还没从“原型继承”中回过神来(可以参考笔者上一篇文章《大话JavaScript对象》)...

  • 120
    大话JavaScript对象

    前言 写C++、Java、Objective-C等语言的猿人们,在接触JavaScript时一定被__proto__和prototype搞得晕头转向。笔者正在自学JavaSc...

  • 120
    dyld源码解读

    前言 dyld全称the dynamic link editor,即动态链接器,其本质是Mach-O文件,他是专门用来加载动态库的库。源码可以从这里下载,本文采用的是| d...