
【iOS】Runtime - Part 1 && 对象与类的本质
从 objc_object、isa_t、Tagged Pointer、对象内存布局一路拆到类与对象的本质,梳理 Objective-C Runtime 中对象如何关联到类。

【iOS】Runtime - Part 3 && Category:加载、覆盖与关联对象
承接对象/类结构与消息发送机制,梳理 Category 的编译产物、运行时加载、方法列表附加、同名方法覆盖现象、+load/+initialize 差异与关联对象原理。

【iOS】block
block 对应结构体的定义如下: 图中我们可以看到,isa其实有六个部分 isa指针,所以对象都有isa指针。这就证明了 block其实本质上就是一个Objective C对象 ,他的值通常是这三种 NSConcreteGlobalBlock (全局区:没捕获任何外部变量) N

【iOS】Effective Objective-C 熟悉Oc
熟悉Objective C 了解Objective C语言的起源 1. 使用消息结构的语言,其运行时所执行的代码由运行环境决定,使用函数调用的语言,则由编译器决定 详细说说: 在C语言中,编译器在编译阶段或链接阶段就已经知道了函数在内存中的地址(或相对偏移量),他生成的汇编指令是

【iOS】KVO
In order to understand key value observing, you must first understand key value coding. KVC是键值编码 ,在对象创建完成后,可以 动态的给对象属性赋值 ,而 KVO是键值观察 ,提供了一种监

【iOS】alloc、init、new
1. alloc 进入到alloc的源码里面,我们发现alloc调用了 objc rootAlloc方法,而 objc rootAlloc调用了callAlloc方法。 具体内容本人暂时也一知半解,贴一张图 alloc为我们创建了1个对象并申请了一块不小于16字节的内存空间 具体

【iOS】KVC总结
什么是KVC KVC 的全称是Key Value Coding(键值编码),是由NSKeyValueCoding非正式协议启用的一种机制,对象采用这种机制来提供对其属性的间接访问,可以通过字符串来访问一个对象的成员变量或其关联的存取方法(getter or setter)。 通常

【iOS】对象复制与属性关键字
目录 对象复制 一、copy与mutableCopy方法 二、NSCopying和NSmutableCopying协议 三、深复制与浅复制 按照类型说明: 非容器类对象的深拷贝与浅拷贝 不可变字符串 可变类型字符串 容器类对象的深浅拷贝 自定义类型的拷贝 容器类对象的深拷贝 归档

【iOS】OC语言学习——Foundation框架回顾及考核补缺
目录 和点语法区别: 属性关键字 Foundation框架 数组(NSArray和NSMutableArray) 对几何元素的整体调用方法 排序 使用枚举器遍历元素 可变数组 集合(NSSet与NSMutableSet) NSMutableSet NSCountedSet的用法

【iOS】OC语言学习 —— 重点内容总结与拓展(上)
目录 隐藏和封装 访问控制符 理解@package访问控制符 对象初始化 一、为对象分配空间 二、初始化方法与对象初始化 OC属性及属性关键字 类、元类、父类的关系 isKindOfClass && isMemberOfClass 关键字 单例模式 基本创建 使用dispatch

【iOS】Oc语言学习 —— 重点内容总结与拓展(下)
目录 类别(分类)和拓展 三种字符串的管理方式 NSCFConstantString Constant 常量 NSCFString NSTaggedPointerString 三种字符串类型的copy/ mutablecopy / retainCount情况 内存分布补充 NSC

【iOS】OC语言学习——面向对象(下)
目录 一、OC的包装类 1.1 以下不是包装类: 1.2 以下是包装类: 二、处理对象 2.1 处理对象和description方法 一、NSLog(@"%@", obj) 做了什么? 二、默认行为 三、如何自定义打印内容? 输出: 四、打印集合对象(NSArray、NSDict

【iOS】OC的实例对象,类对象,元类对象
OC的实例对象,类对象,元类对象 在 Objective C 中,一切都是对象 —— 包括“类”本身。它背后的运行机制依赖于一个强大的 元类(metaclass)系统 。 实例对象 类对象 元类对象 是 Objective C Runtime 的三种核心对象,它们构成了类与对象的

【iOS】Objective - C初探之面向对象
面向对象与面向过程设计思想 面向过程 是以过程(步骤)为中心的编程方式。 把一件要做的事,从头到尾, 按照步骤拆成一系列操作 ,一步步完成。 重点是 怎么做,顺序是什么 面向过程的特点 注重 流程控制 (先做什么、后做什么) 编程思维是: “先干这个,再干那个” 主要用 函数 组

【iOS】Oc语言学习 —— Foundation框架总结
1、NSString类 我们对一个NSString对象赋值的方法是直接将字符串常量赋给对象,例如: NSString str = @"hello"; 因为我们的NSString是不可变的,所以我们只能通过一些方法来在我们原来的字符串后面追加或初始化我们的字符串来间接修改我们的对象

【iOS】NSString的三种实现方式
oc里的NSString有三种实现方式,为 NSCFConstantString、 NSCFString、NSTaggedPointerString 1. NSCFConstantString(字面量字符串) 从字面意思上可以看出, NSCFContantString可以理解为常

【iOS】OC语言学习——Foundation框架(下)
四、Objective — C 集合表述 OC集合类可以用于存储数量不等的多个对象,并且可以实现常用的数据结构,例如栈和队列等,除此以外,OC集合还可以用来保存具有映射关系的关联数组。 OC的集合大致上可以分为三种体系: NSArray 代表有序、可重复的集合,很像一个数组 NS

【iOS】OC语言学习——Foundation框架(上)
一、字符串 NSString代表字符序列不可变的字符串,而NSMutable代表字符序列可变的字符串。 1.1 NSString字符串及功能 通过NSString,我们可以: 1、创建字符串。2、读取文件或网络URL来初始化字符串,或者将字符串写入文件或URL。3、获取字符串长度

Objective-C 内部机制:Release
Always Processing 中文译文:Objective-C 内部机制:Release(原文:Objective-C Internals: Release)

Objective-C 内部机制:Retain
Always Processing 中文译文:Objective-C 内部机制:Retain(原文:Objective-C Internals: Retain)

Objective-C 内部机制:关联引用
Always Processing 中文译文:Objective-C 内部机制:关联引用(原文:Objective-C Internals: Associated References)

Objective-C 内部机制:Tagged Pointer 对象
Always Processing 中文译文:Objective-C 内部机制:Tagged Pointer 对象(原文:Objective-C Internals: Tagged Pointer Objects)

Objective-C 内部机制:非脆弱实例变量
Always Processing 中文译文:Objective-C 内部机制:非脆弱实例变量(原文:Objective-C Internals: Non-Fragile Instance Variables)

Objective-C 内部机制:未实现类与 Toll-Free Bridging
Always Processing 中文译文:Objective-C 内部机制:未实现类与 Toll-Free Bridging(原文:Objective-C Internals: Unrealized Classes (and Toll-Free Bridging))

Objective-C 内部机制:isa 的多重用途
Always Processing 中文译文:Objective-C 内部机制:isa 的多重用途(原文:Objective-C Internals: The Many Uses of isa)

Objective-C 内部机制:类图实现
Always Processing 中文译文:Objective-C 内部机制:类图实现(原文:Objective-C Internals: Class Graph Implementation)

Objective-C 内部机制:类架构
Always Processing 中文译文:Objective-C 内部机制:类架构(原文:Objective-C Internals: Class Architecture)

锁、线程安全与 Swift(2017 版)
Mike Ash Friday Q&A 中文译文:锁、线程安全与 Swift(2017 版)

剖析 ARM64 上的 objc_msgSend
Mike Ash Friday Q&A 中文译文:剖析 ARM64 上的 objc_msgSend

动手实现 dispatch_queue
Mike Ash Friday Q&A 中文译文:动手实现 dispatch_queue

Tagged Pointer 字符串
Mike Ash Friday Q&A 中文译文:Tagged Pointer 字符串

Objective-C 运行时中的并发内存释放
Mike Ash Friday Q&A 中文译文:Objective-C 运行时中的并发内存释放

动手实现 @synchronized
Mike Ash Friday Q&A 中文译文:动手实现 @synchronized

锁、线程安全与 Swift
Mike Ash Friday Q&A 中文译文:锁、线程安全与 Swift

动手实现 NSZombie
Mike Ash Friday Q&A 中文译文:动手实现 NSZombie

dispatch_once 的秘密
Mike Ash Friday Q&A 中文译文:dispatch_once 的秘密

受 Heartbleed 启发的偏执内存分配器
Mike Ash Friday Q&A 中文译文:受 Heartbleed 启发的偏执内存分配器

当 autorelease 并非 autorelease 时
Mike Ash Friday Q&A 中文译文:当 autorelease 并非 autorelease 时

NSObject 类与协议
Mike Ash Friday Q&A 中文译文:NSObject 类与协议

为什么寄存器快而内存慢
Mike Ash Friday Q&A 中文译文:为什么寄存器快而内存慢

ARM64 与你
Mike Ash Friday Q&A 中文译文:ARM64 与你

动手实现 Dispatch Group
Mike Ash Friday Q&A 中文译文:动手实现 Dispatch Group

C 语言小测验
Mike Ash Friday Q&A 中文译文:C 语言小测验

动手实现 NSInvocation(下)
Mike Ash Friday Q&A 中文译文:动手实现 NSInvocation(下)

动手实现 NSInvocation(上)
Mike Ash Friday Q&A 中文译文:动手实现 NSInvocation(上)

动手实现 KVC 键值编码
Mike Ash Friday Q&A 中文译文:动手实现 KVC 键值编码

动手实现 NSObject
Mike Ash Friday Q&A 中文译文:动手实现 NSObject

Mach 异常处理器
Mike Ash Friday Q&A 中文译文:Mach 异常处理器

读取一字节内存时发生了什么
Mike Ash Friday Q&A 中文译文:读取一字节内存时发生了什么

Objective-C 常见陷阱
Mike Ash Friday Q&A 中文译文:Objective-C 常见陷阱

动手构建 Mach-O 可执行文件
Mike Ash Friday Q&A 中文译文:动手构建 Mach-O 可执行文件

动手实现 objc_msgSend
Mike Ash Friday Q&A 中文译文:动手实现 objc_msgSend

dyld:OS X 上的动态链接
Mike Ash Friday Q&A 中文译文:dyld:OS X 上的动态链接

那些你从不想知道的 C 语言冷知识
Mike Ash Friday Q&A 中文译文:那些你从不想知道的 C 语言冷知识

动手实现 Tagged Pointer
Mike Ash Friday Q&A 中文译文:动手实现 Tagged Pointer

动手实现 NSNumber
Mike Ash Friday Q&A 中文译文:动手实现 NSNumber

Objective-C 字面量语法
Mike Ash Friday Q&A 中文译文:Objective-C 字面量语法

PLWeakCompatibility 源码导览(下)
Mike Ash Friday Q&A 中文译文:PLWeakCompatibility 源码导览(下)

PLWeakCompatibility 源码导览(上)
Mike Ash Friday Q&A 中文译文:PLWeakCompatibility 源码导览(上)

Nib 的内存管理
Mike Ash Friday Q&A 中文译文:Nib 的内存管理

正确实现 KVO(第二版)
Mike Ash Friday Q&A 中文译文:正确实现 KVO(第二版)

环形缓冲区与镜像内存(下)
Mike Ash Friday Q&A 中文译文:环形缓冲区与镜像内存(下)

环形缓冲区与镜像内存(上)
Mike Ash Friday Q&A 中文译文:环形缓冲区与镜像内存(上)

fork 安全
Mike Ash Friday Q&A 中文译文:fork 安全

反汇编剖析(三)ARM 篇
Mike Ash Friday Q&A 中文译文:反汇编剖析(三)ARM 篇

反汇编剖析(二)
Mike Ash Friday Q&A 中文译文:反汇编剖析(二)

反汇编剖析(一)
Mike Ash Friday Q&A 中文译文:反汇编剖析(一)

构建带记忆化的 Block 代理
Mike Ash Friday Q&A 中文译文:构建带记忆化的 Block 代理

通用 Block 代理
Mike Ash Friday Q&A 中文译文:通用 Block 代理

GCD 的新特性
Mike Ash Friday Q&A 中文译文:GCD 的新特性

自动引用计数 ARC 详解
Mike Ash Friday Q&A 中文译文:自动引用计数 ARC 详解

动手实现引用计数
Mike Ash Friday Q&A 中文译文:动手实现引用计数

动手实现 NSAutoreleasePool
Mike Ash Friday Q&A 中文译文:动手实现 NSAutoreleasePool

方法签名不匹配问题
Mike Ash Friday Q&A 中文译文:方法签名不匹配问题

Objective-C Block 对决 C++0x Lambda
Mike Ash Friday Q&A 中文译文:Objective-C Block 对决 C++0x Lambda

Zombie 对象的内部原理
Mike Ash Friday Q&A 中文译文:Zombie 对象的内部原理

MABlockClosure 源码导览
Mike Ash Friday Q&A 中文译文:MABlockClosure 源码导览

信号处理
Mike Ash Friday Q&A 中文译文:信号处理

OSAtomic 原子操作导览
Mike Ash Friday Q&A 中文译文:OSAtomic 原子操作导览

复合字面量
Mike Ash Friday Q&A 中文译文:复合字面量

实用浮点数知识
Mike Ash Friday Q&A 中文译文:实用浮点数知识

自定义对象内存分配器
Mike Ash Friday Q&A 中文译文:自定义对象内存分配器

访问器、内存管理与线程安全
Mike Ash Friday Q&A 中文译文:访问器、内存管理与线程安全

运行时动态创建类
Mike Ash Friday Q&A 中文译文:运行时动态创建类

对 CoreFoundation 对象的自动置空弱引用
Mike Ash Friday Q&A 中文译文:对 CoreFoundation 对象的自动置空弱引用

自动置空的弱引用
Mike Ash Friday Q&A 中文译文:自动置空的弱引用

实现相等性判断与哈希
Mike Ash Friday Q&A 中文译文:实现相等性判断与哈希

处理循环引用 Retain Cycle
Mike Ash Friday Q&A 中文译文:处理循环引用 Retain Cycle

实现快速枚举 Fast Enumeration
Mike Ash Friday Q&A 中文译文:实现快速枚举 Fast Enumeration

Objective-C 各种遍历方式对比
Mike Ash Friday Q&A 中文译文:Objective-C 各种遍历方式对比

方法替换(Method Swizzling)实战
Mike Ash Friday Q&A 中文译文:方法替换(Method Swizzling)实战

Objective-C 中的栈对象与堆对象
Mike Ash Friday Q&A 中文译文:Objective-C 中的栈对象与堆对象

GCD 实战演练
Mike Ash Friday Q&A 中文译文:GCD 实战演练

GCD 入门(四)杂项补遗
Mike Ash Friday Q&A 中文译文:GCD 入门(四)杂项补遗

GCD 入门(三)Dispatch Source
Mike Ash Friday Q&A 中文译文:GCD 入门(三)Dispatch Source

GCD 入门(二)多核性能
Mike Ash Friday Q&A 中文译文:GCD 入门(二)多核性能

GCD 入门(一)基础与派发队列
Mike Ash Friday Q&A 中文译文:GCD 入门(一)基础与派发队列

Block 实用指南
Mike Ash Friday Q&A 中文译文:Block 实用指南

C 语言类型限定符(上)
Mike Ash Friday Q&A 中文译文:C 语言类型限定符(上)

Objective-C 类的加载与初始化
Mike Ash Friday Q&A 中文译文:Objective-C 类的加载与初始化

Objective-C 消息转发
Mike Ash Friday Q&A 中文译文:Objective-C 消息转发

Objective-C 消息发送机制
Mike Ash Friday Q&A 中文译文:Objective-C 消息发送机制

Objective-C 运行时简介
Mike Ash Friday Q&A 中文译文:Objective-C 运行时简介
