09 2017 档案
网络请求connection session
摘要:网络请求: NSURLConnection 发送同步请求: nsurlconnection发送同步请求是阻塞式,会阻塞当前线程 发送异步请求: nsurlconnection发送异步请求底层是开启子线程发送请求,回调默认是在主线程中回调,如果需要在子线程中回调可以设置代理队列setDelegateQ 阅读全文
posted @ 2017-09-18 22:37 HJiang 阅读(339) 评论(0) 推荐(0)
开发常用小知识点记录
摘要:过时属性和方法提示 阅读全文
posted @ 2017-09-16 19:32 HJiang 阅读(191) 评论(0) 推荐(0)
NSObject中类方法load/initialize加载时机和作用
摘要:方法调用时机 相同点: 程序启动都只会执行仅且一次,再次怎么调用使用类都不会执行了. 不同点: 方法调用时机不一样. > + load程序启动类加载时就会调用,不管该类是否有使用或有Import都会执行 > + initialize 程序启动后,只有类使用时都会触发,包括调用类的类方法或对象方法; 阅读全文
posted @ 2017-09-09 17:13 HJiang 阅读(421) 评论(0) 推荐(0)
GCD dispatch_source基本使用,创建GCD定时器与NSTimer的区别
摘要:可以使用GCD创建定时器 创建定时器: 注意创建gcd定时器timer后,需要保存timer,需要有个引用引用timer,要不然timer会销毁 取消定时器 总结 GCD定时器 1.时间调度很准确,时间是以纳秒为单位,比NSTimer更加精确 2.GCD是不受runloop的影响, 比如:拖动scr 阅读全文
posted @ 2017-09-09 11:19 HJiang 阅读(535) 评论(0) 推荐(0)
Runtime
摘要:Runtime是什么? runtime是OC底层的一套C语言的API(引入 <objc/runtime.h> 或<objc/message.h>),编译器最终都会将OC代码转化为运行时代码,底层是通过runtime创建的对象. 另外利用runtime 可以做一些OC不容易实现的功能 .动态交换两个方 阅读全文
posted @ 2017-09-04 23:16 HJiang 阅读(259) 评论(0) 推荐(0)
Runloop运行循环的理解
摘要:runloop运行流程图 定时器 结论:如果定时器在主线程中开启,可以正常运行;定时器在子线程中开启,无法正常运行; 如果对应线程没有 RunLoop 该方法也会失效,也就是说currentRunloop中 没有timer,没有source,也没有OBServer,添加 [NSRunLoop cur 阅读全文
posted @ 2017-09-04 23:00 HJiang 阅读(589) 评论(0) 推荐(0)
GCD dispatch_apply基本使用
摘要:dispatch_apply,可以并发的循环迭代,性能上可以提高,前提是循环不在乎迭代的顺序 如果不想让在当前线程参与迭代任务,可以把整个迭代任务包含在一个新的线程中 (优先采用此方式), 如: 但此方式需要注意一个问题,就是新开的线程包含的迭代任务,不要是同一个队列,要不然整个迭代任务会在同一个线 阅读全文
posted @ 2017-09-02 21:20 HJiang 阅读(351) 评论(0) 推荐(0)
GCD信号量semaphore控制线程并发数
摘要:GCD提供了信号semaphore来控制线程并发数,提供一下三个函数 dispatch_semaphore_create(<#long value#>) // 创建信号semaphore,value参数为任务并发同时执行时线程最大并发数 dispatch_semaphore_wait(<#dispa 阅读全文
posted @ 2017-09-02 20:43 HJiang 阅读(699) 评论(0) 推荐(0)
多线程GCD dispatch_once_t/dispatch_barrier_<a>sync/dispatch_group_t
摘要:dispatch_once 在dispatch_once block中的代码在程序启动到程序退回只会执行一次,如:不管for循环多少,只会一次打印 利用dispatch_once实现单粒模式 单粒模式(不管以任何方式创建对象,内存中永远只会有且仅有一份该对象的地址) 实现单粒,需要步骤: 1.提供一 阅读全文
posted @ 2017-09-01 18:02 HJiang 阅读(275) 评论(0) 推荐(0)
iOS开发常用宏定义
摘要:单粒模式宏定义 宏中使用##,传入参数作为shared方法名称: 定义开发模式和发布模式条件宏 替换系统NSLog 阅读全文
posted @ 2017-09-01 11:04 HJiang 阅读(304) 评论(0) 推荐(0)
OC方法可变参数
摘要:OC可变参数: 使用__attribute__((sentinel))语法可以告诉编译器这是一个需要哨兵参数的函数。它的作用就是告诉函数没有参数了。这也是为什么ObjC中[NSArray arrayWithObjects: ...,nil]最后必须以nil参数结尾的原因 阅读全文
posted @ 2017-09-01 11:01 HJiang 阅读(440) 评论(0) 推荐(0)