自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 资源 (2)
  • 收藏
  • 关注

原创 03.02-适配器模式(Adapter)

将某个接口转换成客户端期望的另一个接口表示,主要是为了兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作适配器模式分为类适配器模式和对象适配器模式。

2022-08-01 18:37:38 216

原创 03. 01- 代理模式(Proxy)

由于某些原因需要给某对象提供一个代理以控制该对象的访问,这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介.

2022-08-01 17:23:13 202

原创 02. 04-建造者模式

建造者模式

2022-08-01 16:53:19 115

原创 02. 02-工厂模式

工厂模式

2022-08-01 15:21:33 163

原创 02. 01-单例模式(singleton)

单例模式

2022-08-01 10:10:26 73

原创 02. 00-设计模式分类

设计模式分类

2022-08-01 09:21:54 53

原创 2.01_SDWebImage (5.12.3)源码分析

文章目录@[toc]0. 基本使用入口1. 取消已有的下载操作2. 获取 SDWebImageManager 单例1. 缓存管理器2. 下载管理器3. _failedURLs4. _runningOperations3. 设置占位图4. 加载图片1.failedURLs2. operation3. 获取图片1. 缓存查找2. 去网络下载图片5. 记录获取图片的操作6. 显示图片![image.png](https://img-blog.csdnimg.cn/img_convert/0cec5174ec1

2022-04-15 10:35:13 2632

原创 1.01_AFNetworking(4.0.1)源码分析(一)

文章目录0. 系统sessionAFNetworking在这里插入图片描述在这里插入图片描述1. 网络通信模块AFURLSessionManager/AFHTTPSessionManager0. 系统session创建请求路径URL创建一个session的配置建立会话对象,(需要session配置)建立一个可变的请求(NSMutableURLRequest)建立请求任务(也可以使用代理的方法)执行请求任务AFNetworking1. 网络通信模块AFURLSessionMa

2022-04-12 11:55:04 580

原创 01. 0.设计模式的7大原则

文章目录1. 单一职责原则基本介绍总结2. 接口隔离原则基本介绍总结3. 依赖倒转原则(Dependence Inversion Principle)基本介绍总结4. 里氏替换原则OO中的继承性的思考和说明基本介绍总结5. 开闭原则(Open Closed Principle)基本介绍总结6.迪米特法则基本介绍注意事项和细节7. 合成复用原则基本介绍设计原则核心思想7大原则,23种设计模式使用设计模式的目的:低耦合性,高内聚性,可维护性,可扩展性,重用性,灵活性低耦合性,高内聚性:模块内部很紧密,

2022-04-06 14:23:31 421

原创 0.0UML类图

文章目录1. 基本介绍2. UML类图1. 依赖关系(dependence)2. 泛化关系(generalization)3. 实现关系(Implementation)4. 关联关系(association)5.聚合关系(Aggregation)6.组合关系(composition)1. 基本介绍UML - Unified modeling language UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,用于帮组软件开发人员进行思考和记录思路的结果UML本身是一套符号的规定,这些

2022-04-06 13:51:05 130

原创 13.02-耗电优化

文章目录1. 耗电的主要来源2. 耗电优化1. 耗电的主要来源2. 耗电优化尽可能降低CPU、GPU功耗少用定时器优化I/O操作尽量不要频繁写入小数据,最好批量一次性写入读写大量重要数据时,考虑用dispatch_io,其提供了基于GCD的异步操作文件I/O的API。用dispatch_io系统会优化磁盘访问数据量比较大的,建议使用数据库(比如SQLite、CoreData)网络优化减少、压缩网络数据.如果多次请求的结果是相同的,尽量使用缓存.使

2022-04-06 13:37:24 106

原创 13.01CPU&GPU_卡顿

文章目录1. 屏幕成像原理屏幕成像原理卡顿产生的原因2. 卡顿优化1. CPU2. GPU3. 3. 离屏渲染卡顿检测1. 屏幕成像原理屏幕成像原理iOS 是每秒60帧1S/60 = 16.7ms每16.7ms产生一个垂直同步信号(VSync),刷新屏幕卡顿产生的原因每当垂直同步信号来到时,就会到帧缓冲区中读取屏幕内容,然后刷新屏幕.如果cpu + GPU 处理的时间 多于16.7ms,那么当垂直同步信号发出时,会发现帧缓存区内没有内容可以刷新屏幕,那么这一次,屏幕内容不变,

2022-04-06 12:57:17 347

原创 12.06-自动释放池(autoreleasepool)

文章目录1. 自动释放池查看CPP代码![在这里插入图片描述](https://img-blog.csdnimg.cn/a1626445fc90424a8360f56d86fac826.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5reh5pqX5LqR5LmL6YGl,size_20,color_FFFFFF,t_70,g_se,x_16)2. AutoreleasePoolPage的结构3.

2022-04-06 12:02:19 1659

原创 12.05-dealloc & weak表

文章目录1. -dealloc1. _objc_rootDealloc2. rootDealloc3. object_dispose在这里插入图片描述4. objc_destructInstance5. clearDeallocating()6. clearDeallocating_slow1. weak 表1. weak_clear_no_lock引用计数可以直接存储在优化过的isa指针中,当引用过多,就会存储在Side Table中refcnts : 存放着引用计数的散列表1. -deall

2022-03-30 17:17:35 2057

原创 12.04-内存管理_Copy,MutableCopy

文章目录1. 可变&不可变2.深拷贝&浅拷贝1. 可变&不可变copy :copy 出来的都是不可变的类型MutableCopy :mutableCopy 出来的都是可变对象2.深拷贝&浅拷贝对不可变类型的数据进行copy,就是浅拷贝(指针拷贝)源数据和目标数据都是不可变的, 所以为了不让费内存,就不重新赋值一块内存了,直接指针拷贝,大家共用一块内存就可以了其它的组合都是深拷贝(内存拷贝)因为不论是源数据,还是目标数据

2022-03-30 16:02:36 2508

原创 12.03-内存管理_Tagged Pointer

文章目录1. Tagged Pointer1. Tagged Pointer用于优化NSNumber , NSDate , NSString 等小对象的存储.在没有使用tagged Pointer之前,NSNumber等对象需要动态分配内存,维护引用计数等,NSNumber指针存储的是堆中的对象地址.使用tagged Pointer之后,NSNumber指针里面存储的数据变成了tag(数据类型) + Datatag : 标记 表明里面存储的是什么类型(NSNumber,NSDat

2022-03-15 10:45:29 2719

原创 12.02-内存管理-内存布局

文章目录1.内存布局1.内存布局可以看看各个变量的地址大小

2022-03-15 10:31:19 578

原创 12.01-内存管理_定时器的循环引用

循环引用,定时器

2022-03-15 10:10:55 2665

原创 11.04-多线程_线程锁

文章目录1.OSSpinLock2. os_unfair_lock3. pthread_mutex递归锁条件4. NSLock,NSRecursiveLock5. NSConditionLock6.dispatch_semaphore7. dispatch_queue8. @synchronized9. iOS线程同步方案性能比较10.自旋锁,互斥锁比较11.读写安全1. pthread_rwlock2. dispatch_barrier_async1.OSSpinLock2. os_unfair_

2022-03-02 17:05:08 57

原创 11.03-多线程_NSOperation

文章目录1. 基本操作添加事物到队列NSBlockOperationqualityOfService 优先级主线程通信2. NSOperation属性挂起(暂停,继续) 和 全部取消NSOperation 是一个抽象类1. 基本操作添加事物到队列直接start不指定队列就在主线程,添加到队列后就不用start了NSBlockOperationqualityOfService 优先级主线程通信2. NSOperation属性挂起(暂停,继续) 和 全部取消...

2022-03-02 16:44:41 75

原创 11.02-多线程_GCD

文章目录1.队列2.栅栏函数3. 调度组3.信号量Dispatch_SourceGCD : 纯C语言,自动利用更多的CPU内核,自动管理线程的生命周期(创建线程,调度任务,销毁线程)1.队列-主队列专门用来在主线程上调度任务的队列不会开启新线程如果当前主线程正在有任务执行,那么无论主队列中当前被添加了什么任务,都不会被调度dispatch_get_main_queue();全局队列为了方便程序员的使用,苹果提供了全局队列 dispatch_get_global_queue(0

2022-03-02 16:36:01 2296

原创 11.01-多线程

文章目录1. 线程和进程的关系和区别1. 线程的定义2. 进程的定义3.进程和线程的区别2. 多线程的意义3. 线程的生命周期4.线程池调度原理5. 容易混淆的术语1. 线程和进程的关系和区别1. 线程的定义线程是进程的基本执行单元,一个进程的所有任务都在线程中执行进程想要启动,必须要有线程,进程只需要有一条线程程序启动会默认开启一条线程,这条线程会被成为主线程2. 进程的定义进程是指在系统中正在运行的一个应用程序**每个进程之间都是独立的,**每个进程都运行在其专用的,且都保护的内

2022-03-02 16:11:40 173

原创 10.01-runloop

runloop

2022-03-02 15:53:58 1284

原创 09.06-消息转发

文章目录1. 消息转发1. 把消息转发给其它能处理的对象2. 方法签名2. 流程图1. 消息转发如果自身不能处理消息,那么可以把消息转发给别的能处理的对象1. 把消息转发给其它能处理的对象Dog对象不能处理call : 方法而Animal里面实现了call: 方法,就把消息转发给Animal来处理2. 方法签名生成方法签名,然后转发给别的对象处理NSInvocation可以修改消息接受者可以修改selector可以修改参数结果2. 流

2022-03-02 10:48:44 56

原创 09.05-消息解析-resolveInstanceMethod

resolveInstanceMethod

2022-03-02 09:12:37 756

原创 09.04-消息发送

objc_msgSend,

2022-03-01 16:15:30 731

原创 09.03-runtime_cache方法缓存

快速查找,cache

2022-03-01 14:18:35 1052

原创 09.02-runtime_class的结构

class的结构

2022-03-01 12:55:03 69

原创 09.01-runtime_isa详解

文章目录1. isa详解2. 位域1. isa详解在arm64架构之前,isa就是一个普通的指针,存储着Class,Meta-Class对象的内存地址从arm64架构开始,对isa进行了优化,变成了一个**共用体(union)**结构,还使用位域来存储更多的信息位域中各个存储位的作用2. 位域0b 0000 0000 : 后四位分别代表着方向 right,left,down,up这样可以节省空间...

2022-03-01 12:40:05 74

原创 08.06-block循环引用

1. ARC 解决循环引用__block id weakSelf = self不能解决循环引用的问题必须调用block() , 在block中用weakSelf = nil , 断开引用循环2. MRC 解决循环引用

2022-03-01 12:12:42 59

原创 08.05-block -- __block

__block

2022-03-01 12:00:32 53

原创 08.04-block 对象类型的变量

block , 对象类型的变量

2022-03-01 11:48:58 754

原创 08.03-block的类型

block的类型

2022-03-01 11:38:48 140

原创 08.02-block变量捕获

block变量捕获

2022-03-01 11:30:10 208

原创 08.01-block

block

2022-03-01 11:10:19 54

原创 06. 03 +initialize方法

initialize

2022-02-26 18:05:27 184

原创 06.02 +load

+load方法的执行过程,

2022-02-26 16:15:43 335

原创 06. 01-Category

Category

2022-02-26 14:25:18 125

原创 5.KVC

KVC,取值赋值的过程

2022-02-26 10:56:57 143

原创 4.KVO

KVO,KVO是如何实现的

2022-02-26 09:58:18 158

自定义警报框

自定义的UIAlertView,使用方法和系统的UIAlertView一样。

2015-10-14

iOS手势解锁

iOS:用新语言swift写得手势解锁,用了两种方法,代码里有详细的注释帮助你看明白。

2015-10-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除