(1)NSThread
1.偏向于底层,线程需要自己维护,使用起来不方便。
(2)NSOperation
1.使用block && target selector
2.代码行数多,比如创建一个队列。
3.如果流程复杂,代码可读性好。
4.NSOperationQueue启动后,可以取消。
5.可以控制最大并发量。
NSOperationQueue
NSInvocationOperation
颜色
NSBlockOperation
(3)GCD
1.使用block
2.代码行数较少。
3.如果流程复杂,代码可读性差。
4.GCD启动后,不能取消。
5.不可以控制最大并发量。
dispatch_async
dispatch_group 分组
dispatch.semphore 信号量
dispatch_after
dispatch_once 单例模式
线程安全(线程同步)
1,线程锁
2,dispatch_semphore 信号量
Sqlite 有一个第三方库 fmdb
1.使用字符串进行数据库操作
2.无法做到无缝升级
3.使用多表查询,需要书写sql数据库语言
CoreData 有一个第三方库 magicRecord
1.使用属性的setter 和getter方法进行操作
2.可以无缝升级,代码增减属性 opersions就可以了
3.使用RelationShipe进行关联
4.多线程加CoreData遇到的问题:死锁(程序莫名的进入卡屏卡死)多个线程操作不同的对象,使用MagciRecord