2020年4月10日
底层
block
1、block 的底层结构假设对于以下 block:
12345int a = 10;void (^myblock)(void) = ^{ NSLog(@"myblock is %d",a); // 注意,block 内部访问了外部变量};myb ...
阅读全文
2020年3月29日
底层
对象
一般我们都是通过如下方式创建一个对象:
1MyObject *objc = [[MyObject alloc] init];
那么,alloc 和 init 方法都分别做了什么事呢?
1、allocalloc 方法实现如下:
123+ (id)alloc { return _ ...
阅读全文
2020年3月28日
底层
对象
1、NSObject 对象的内存占用首先,我们知道,在 32 位系统中,指针占用 4 个字节;在 64 位系统中,指针占用 8 个字节。这里,我们只考虑 64 位情况。
对于 NSObject 对象, 其实现如下:
12345struct NSObject_IMPL { Cl ...
阅读全文
2019年11月21日
底层
isa
对象
一、NSObject 对象1、NSObject 的底层实现我们在 iOS 开发过程中,所编写的 Objective-C 代码,其底层实现都是使用的 C\C++ 代码,所以 Objective-C 的面向对象都是基于 C\C++ 的数据结构实现的。
例如,对于以下代码(main.m):
123 ...
阅读全文
2019年10月11日
源码
一、概述AFNetworking 是 iOS 中常用的网络请求库,其使用也比较简单,以 POST 请求为例:
1234567891011121314151617181920212223242526// 创建 AFHTTPSessionManager 实例AFHTTPSessionManage ...
阅读全文
2019年10月6日
源码
一、概述MLeaksFinder 是腾讯 WeRead 团队开源的 iOS 内存泄露检测工具。MLeaksFinder 的使用非常简单,使用 pod 添加了 MLeaksFinder 依赖之后,如果页面出现了内存泄露,APP 进行弹窗提示:
接下来,通过 MLeaksFinder 源码,看下 ...
阅读全文
2019年10月3日
源码
一、概述SDWebImage 是 iOS 开发中比较常用的一个开源库,支持加载网络图片到 UIImageView / UIButton 等 UI 控件上。
其使用方式也比较简单,以 UIImageView 加载网络图片为例:
1[self.imageView sd_setImage ...
阅读全文
2017年7月6日
一、概述在上一篇文章整理了在插件开发中如何 HOOK 动态语言 Objective-C 中的方法,实际上静态语言 C 语言中的函数也是有办法 HOOK 的,这也说明了绝对的静态语言是不存在的。
为了实现 HOOK C 语言中的函数,我们需要用到 Facebook 的一个开源框架 fishho ...
阅读全文
2017年6月25日
一、概述iOS 逆向工程是指在软件层面上进行逆向分析的一个过程,基于 iOS 逆向工程技术,我们可以监控甚至改变 APP 的运行逻辑,从而达到获取核心信息,了解软件设计原理等目的。通过一段时间对 iOS 逆向工程的研究发现很有趣,会在博客记录学习开发过程中的心得和笔记。
二、用到的设备或工具 ...
阅读全文