SDWebImage 相信对大多数开发者来说,都是一个不陌生的名字。它除了帮助我们读取网络图片,还会处理这些图片的缓存。它的缓存机制到底是什么样的呢,让我给跟大家唠叨唠叨,希...
SDWebImage 相信对大多数开发者来说,都是一个不陌生的名字。它除了帮助我们读取网络图片,还会处理这些图片的缓存。它的缓存机制到底是什么样的呢,让我给跟大家唠叨唠叨,希...
一、背景 最近Blurrr新版本需求出来了,需要iOS客户端可以保存带Alpha通道视频。 那什么是带Alpha通道的视频呢?举个栗子: 在视频编辑中,我们常常会将文字增加各...
KVC 全名:Key-value coding,中文简直编码。苹果对其定义如下: Key-value coding is a mechanism enabled by the...
了解Runtime的同学应该都听说过或者使用过Method-Swizzling,今天我们就来一起了解下Method-Swizzling的使用以及坑点。 一、Method-Sw...
上一篇中,我们分析了dyld,最后说到会调用_objc_init函数,那_objc_init是干嘛的呢? 一、_objc_init 直接源码中搜索_objc_init,我们可...
一、背景知识 1.静态库和动态库 1.1.库 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用。什么时候我们会用到库呢? 一...
面试的时候,面试官经常会问?如果调用的方法找不到时,在奔溃之前系统会给我们三次机会去挽救,避免APP直接崩溃。这三次机会分别是什么?他们的顺序和流程是怎样的?今天我们就来分析...
上一篇我们分析了objc_msgSend的快速查找方法的流程,我们调用方法实际上就是发送消息,然后首先会到cache中进行查找,也即是快速查找。objc_msgSend 通过...
在iOS开发中,我们常常会调用各种方法,既包括对象方法也包括类方法,那我们方法调用内部到底是如何实现的呢?我们今天就来一起探索一下。 一、objc_msgSend和objc_...
前面我们探索类的时候,了解类的结构。并且有看到objc_class中包含cache属性是用来做方法缓存的,其是一个cache_t结构体,那cache_t内部又是什么样的?是如...
这篇我们接着分析类。在iOS开发中我们经常会使用到实例方法和类方法。那实例方法和对象方法是存放在哪里的呢?今天,我们就来一探究竟。 一、属性、成员变量、实例变量 同样使用LP...
本篇文章我们会继续探索iOS底层非常重要的内容--类。 一、类的关系分析 我们创建两个类:LPPerson和LPStudent。LPPerson继承于NSObject,LPS...
一、OC对象的本质是什么? 可能有很多同学都知道答案,即对象的本质是结构体。但是怎么证明呢?今天我们就来一起验证下。 1、clang编译器 Clang 是⼀个由 Apple ...
在上一边文章中,我们在简单介绍内存对齐,今天我们更加深入一点: 一、获取内存大小的三种方式 先看下面这段代码: 看一下打印结果: 这三种方式是干嘛的?为什么获取的结果是这样的...
我们平常开发中,我们在创建对象时,一般都是用这样: 那大家有想过,为什么必须要这样创建才行?alloc和init以及new到底干了什么?今天我们就来探索下 一、准备工作 1、...
一、What is Metal? 在 WWDC 2014 上,Apple为游戏开发者推出了新的平台技术 Metal,该技术能够为 3D 图像提高 10 倍的渲染性能,并支持大...
这篇文章我们继续研究滤镜实现,主要实现的滤镜大家应该在抖音系中有见到过,ok,话不多说,直接开始吧! 一、缩放滤镜 1、效果: 2、着色器代码 这里我们的缩放采用的是在顶点着...
上一篇文章中主要讲了分屏滤镜,这篇我们了解一下灰度滤镜和马赛克滤镜,其中马赛克滤镜分别用正方形、六边形和三角形实现。因为我们只是修改滤镜效果,所以UI逻辑和GLKit可以直接...
分屏滤镜在现在的短视频中十分常见,今天我们就使用OpenGL ES来实现分屏滤镜的效果。 一、实现结果 二、分屏原理: 既然是滤镜效果,那肯定就得用到着色器来实现了,分屏效果...