李峰峰博客

Block 实现原理

底层 block
1、block 的底层结构假设对于以下 block: 12345int a = 10;void (^myblock)(void) = ^{ NSLog(@"myblock is %d",a); // 注意,block 内部访问了外部变量};myb ...
阅读全文

OC 对象一探究竟之三:alloc 与 init

底层 对象
一般我们都是通过如下方式创建一个对象: 1MyObject *objc = [[MyObject alloc] init]; 那么,alloc 和 init 方法都分别做了什么事呢? 1、allocalloc 方法实现如下: 123+ (id)alloc { return _ ...
阅读全文

OC 对象一探究竟之二:内存中的对象

底层 对象
1、NSObject 对象的内存占用首先,我们知道,在 32 位系统中,指针占用 4 个字节;在 64 位系统中,指针占用 8 个字节。这里,我们只考虑 64 位情况。 对于 NSObject 对象, 其实现如下: 12345struct NSObject_IMPL { Cl ...
阅读全文

OC 对象一探究竟之一:对象的底层实现

底层 isa 对象
一、NSObject 对象1、NSObject 的底层实现我们在 iOS 开发过程中,所编写的 Objective-C 代码,其底层实现都是使用的 C\C++ 代码,所以 Objective-C 的面向对象都是基于 C\C++ 的数据结构实现的。 例如,对于以下代码(main.m): 123 ...
阅读全文

AFNetworking 实现分析

源码
一、概述AFNetworking 是 iOS 中常用的网络请求库,其使用也比较简单,以 POST 请求为例: 1234567891011121314151617181920212223242526// 创建 AFHTTPSessionManager 实例AFHTTPSessionManage ...
阅读全文

MLeaksFinder 实现分析

源码
一、概述MLeaksFinder 是腾讯 WeRead 团队开源的 iOS 内存泄露检测工具。MLeaksFinder 的使用非常简单,使用 pod 添加了 MLeaksFinder 依赖之后,如果页面出现了内存泄露,APP 进行弹窗提示: 接下来,通过 MLeaksFinder 源码,看下 ...
阅读全文

SDWebImage 实现分析

源码
一、概述SDWebImage 是 iOS 开发中比较常用的一个开源库,支持加载网络图片到 UIImageView / UIButton 等 UI 控件上。 其使用方式也比较简单,以 UIImageView 加载网络图片为例: 1[self.imageView sd_setImage ...
阅读全文

iOS 逆向工程之 fishhook

一、概述在上一篇文章整理了在插件开发中如何 HOOK 动态语言 Objective-C 中的方法,实际上静态语言 C 语言中的函数也是有办法 HOOK 的,这也说明了绝对的静态语言是不存在的。 为了实现 HOOK C 语言中的函数,我们需要用到 Facebook 的一个开源框架 fishho ...
阅读全文

iOS 逆向工程之插件开发

一、概述iOS 逆向工程是指在软件层面上进行逆向分析的一个过程,基于 iOS 逆向工程技术,我们可以监控甚至改变 APP 的运行逻辑,从而达到获取核心信息,了解软件设计原理等目的。通过一段时间对 iOS 逆向工程的研究发现很有趣,会在博客记录学习开发过程中的心得和笔记。 二、用到的设备或工具 ...
阅读全文
上一页 下一页