1. 使用 mal ,写一个 Lisp 解释器

    mal 是 GitHub 上的一个开源项目,这是关于它的简单的介绍:使用75种语言编写一个 Lisp 解释器。 这是 mal 语言的语法简介和由 JS 实现的一个在线 repl。

    2019/03/11

  2. 使用75种语言编写一个 Lisp 解释器

    今天介绍一个 GitHub 上面的 Lisp 解释器项目: kanaka / mal。mal 来源于 make a Lisp,既是这个项目的名称,也是这个项目使用的 Lisp 方言的名称。 之前有篇文章介绍了这个项目:56种语言编写一个Lisp解释器。不好意思各位,数字现在已经增长到75了,并且还会继续上升。

    2019/03/06

  3. Cocoa Touch 框架与设计模式

    Any customer can have a car painted any color that he wants so long as it is black. ——Henry Ford, the founder of the Ford Motor Company

    2019/03/03

  4. Objective-C 笔记 关于 +load 和 +initialize

    +load 如果不实现的话不会被调用,initialize 如果不实现的话会沿继承关系向上查找父类的实现。 两者都会被自动调用,不要手动调用。

    2019/02/27

  5. Objective-C 动态创建新类

    在运行时创建新类的流程: 使用 objc_allocateClassPair 创建新类(和元类,这就是函数名叫 objc_allocateClassPair 的原因吧)。 使用 class_addIvar 添加实例变量。 使用 class_addMethod 添加方法。 使用 objc_registerClassPair 将设置好的新类注册到运行时。👌

    2019/02/22

  6. Objective-C Block 的内部实现

    本文内容主要来自于坂本一树 / 古本智彦:Objective-C高级编程

    2019/02/17

  7. Objective-C 引用计数的原理和内部实现

    背景 - 内存管理 Objective-C 建立在 C 语言的基础上。C 语言程序的内存布局主要包括: 栈:由编译器自动分配释放,存放函数的参数值、局部变量的值等。 堆:通常存放程序运行中动态分配的存储空间。C语言中,使用malloc等函数分配的内存是从堆中分配的,在Objective-C中的对象也是从堆中分配内存的。 BSS段:存放程序中未初始化的全局变量和静态变量。 数据段:存放程序中已初始化的全局变量和静态变量以及字符串常量。 代码段:存放程序执行代码。

    2019/02/16

  8. Objective-C 自动引用计数(ARC)的原理和内部实现

    预备知识:Objective-C 引用计数的原理和内部实现

    2019/02/16

  9. 如何对类簇进行子类化

    本文的内容主要来源于 Friday Q&A 2010-03-12: Subclassing Class Clusters by Mike Ash,部分内容有增补和调整。

    2019/01/10