Category与Extension 2018-01-30| iOS | 源码分析 在Objective-C中,要扩展一个类的方法,首先想到的应该是继承,这是面向对象语言的一个特性。继承可以很方便的增加方法,属性等,同时还可以覆写父类的方法。但是,对于大型而复杂的类,继承会导致维护困难。这时Category就可以发挥作用了。
什么是CategoryCategory是Objectiv ...
Read more 解析objc_msgSend(ARM64) 2018-01-29| iOS | Objective-C - 源码分析 概览每个Objective-C对象都有相应的类,这个类都有一个方法列表。类中的每个方法都有一个选择子、一个指向方法实现的函数指针和一些元数据。objc_msgSend的工作就是通过传入的对象和选择子,查找相应方法的函数指针,然后跳转到该函数指针。
查找方法的流程是非常复杂的。如果这个方法没有在对应的 ...
Read more Objective-C Runtime中的并发内存释放 2018-01-29| iOS | Objective-C - 源码分析 Mac和iOS代码中的核心是Objective runtime机制,而runtime的核心是objc_msgSend方法,objc_msgSend的核心是方法缓存机制。今天我们将探索Apple如何在线程安全的情况下改变方法缓存内存的大小和释放,而同时又不影响性能。
消息发送概念objc_msgSen ...
Read more GCDAsynSocket之TCP简析 2018-01-29| iOS | 源码分析 GCDAsynSocket是一个开源的基于GCD的异步的socket库。它支持IPV4和IPV6地址,TLS/SSL协议。同时它支持iOS端和Mac端。本篇主要介绍一下GCDAsynSocket中的TCP用法和实现。
首先通过下面这个方法初始化一个GCDAsynSocket对象。- (id)init ...
Read more NSOperation 2018-01-29| iOS | Objective-C NSOperation表示了一个独立的计算单元。作为一个抽象类,它给了它的子类一个十分有用而且线程安全的方式来建立状态、优先级、依赖性和取消等的模型。你可以使用系统提供的NSBlockOperation和NSInvocationOperation方法来创建一个operation,也可以创建一个继承N ...
Read more GCD简析 2018-01-29| iOS | Objective-C Grand Central Dispatch是一种异步执行任务技术。Dispatch Queue是执行处理的等待队列。它按照追加的顺序(FIFO)执行处理。Dispatch Queue按照是否等待处理可以分为serial Dispatch Queue和Concurrent Dispatch Queu ...
Read more Run Loops 2018-01-29| iOS | runloop Run LoopsRun loops是线程基础机构中非常重要的一环。它是一个处理事件的循环,帮助你安排事件工作和协调接收到的事件。其目的是在工作时让线程处理,在没工作时让线程休眠。runloop的不是完全自管理的,你必须在适当的时机启动它来处理接收到的事件。你可以使用Cocoa和Core Found ...
Read more AutoreleasePool与内存管理 2018-01-29| iOS | 源码分析 NSAutoreleasePool是一个支持Cocoa引用计数的内存管理系统的对象。
自动释放池自动释放池(autorelease pool)会在消失时向池里的对象发送一条release消息。因此池里的对象会延迟释放直到自动释放池结束(如果这个对象还是retained,还是不会释放)。应用(Appl ...
Read more Block源码分析 2018-01-29| iOS | 源码分析 - block 什么是BlockBlock是带有自动变量(局部变量)的匿名函数。Block的内部数据结构如下:
struct Block_layout {
void *isa;
int flags;
int reserved;
void (*invoke)(void *, ...); ...
Read more SDWebImage源码分析 2018-01-29| iOS | Objective-C - 源码分析 SDWebImage库是一个支持缓存的异步图片下载库。为了方便使用,它提供了UIImageView, UIButton, MKAnnotationView等UI组件的分类。它的优点包含以下:
异步图片下载器
异步的内存+磁盘图片缓存,自动缓存过期处理
后台图片解压
同一个URL不会多次下载的保证机 ...
Read more