Intro to Tagged Pointer

所谓 Tagged Pointer 就是指针不再指向数据,而是用其中的一部分直接表示该数据本身。这个词借鉴于 Tagged Architecture 。在 Tagged Architecture 中,每个字(word)的一部分被用来表示数据的类型(type),这部分就是所谓的 Tag。虽然本质上和 Tagged Pointer 有所区别,但该名称还是被一直沿用下来。

问题起因

Obj-C键值编程

Objective-C 键值编程包括键值编码 KVC 和键值观察 KVO 两部分。

键值编码

Obj-C运行时系统

Objective-C 会在运行时执行许多其他语言在编译或链接时执行的常规操作,如确定类型和方法解析。这些处理会带来额外的开销,Objective-C 通过缓存来节约这些开销。

选择器

Obj-C内存管理细节和多线程

iOS 中内存管理的部分是由 NSObject 类实现的。Foundation 框架并没有开源,但是 Cocoa 的互换框架 GNUstep 是开放源码的。互换框架是指,虽然实现的机制可能不一样,但对使用者来说,他们的行为应该是一致的。

Obj-C内存管理

对一个对象发送 retain 消息,该对象引用计数加一;反之,对它发送 release 消息,对象的引用计数会减一。但是,实际上释放内存的消息并不是 release,而是 dealloc 方法。当对象的引用计数达到 0 时,OC 会自动调用 dealloc 方法去释放内存,而不需要手动调用。

测试 MRC

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×