目录
第一节:多线程简介
线程执行原理
主线程
多线程解决方案
pthread
__bridge
NSThread
线程的状态
第二节:多线程访问资源
@Synchronized
nonatomic 、atomic
自动释放池
属性修饰符
第三节:消息循环
消息模式
第四节:GCD
Barrier
dispatch_once、dispatch_after
构建单例模式
调度组
第五节:NSOperation
GCD 与 NSOperation 的区别
自定义operation
第六节:案例
第七节:沙盒缓存
第八节:SDWebImage
第九节:关联对象
第十节:NSCache
第一节:多线程简介
线程执行原理
主线程
多线程解决方案
pthread
__bridge
因为arc 中,会自动管理内存,但是arc 关不了c 语言,所以在c 语言中,创建的对象要自己去释放,桥接就是告诉c 语言,这个对象要去释放
NSThread
线程的状态
第二节:多线程访问资源
@Synchronized
这个对象的锁默认是开着的, 开着意味着线程可以执行代码,sychronized 表示加把锁
nonatomic 、atomic
自动释放池
子线程无法使用主线程的自动释放池,所以要自己创建
属性修饰符
总结起来,使用COPY修饰符进行的是浅拷贝,复制的是对象的引用而不是对象本身。由于NSString是不可变的,所以在实际使用中并不会出现问题。如果需要进行深拷贝,可以使用NSMutableString来创建一个可变的字符串副本。
第三节:消息循环
消息模式
每一个事件和定时器都要有一种模式,它要和线程的模式保持一致,才能运行
第四节:GCD
Barrier
dispatch_once、dispatch_after
构建单例模式
原始单例是线程不安全的
调度组
第五节:NSOperation
GCD 与 NSOperation 的区别
取消操作就是所有的operation 为cancelled
优先级只能保证该operation 执行的几率更大一些,并不能保证该operation优先于其他operation执行完
自定义operation
第六节:案例
layout subviews 这个方法用来设置控件的 frame
block 中使用到self,尽量使用__weak ,避免循环引用
第七节:沙盒缓存
第八节:SDWebImage
第九节:关联对象
因为分类中无法添加属性,所以使用关联对象的方式