平常小问题
1.控制器的view不设置背景色,会不响应UIResponder代理方法.
2.sourcetree每次推送都会要求输入密码,只需在路径http://后添加上自己的用户名@即可
3.利用CAKeyframeAnimation加载gif图时,想让动画执行完停在结束位置,而不是被移除,同时设置这两行代码可以让控件停在结束位置
animation.removedOnCompletion = NO;
animation.fillMode=kCAFillModeForwards;
多线程
1.对于多线程操作建议把线程操作放到@autoreleasepool中.NSThread和NSOperationQueue开辟子线程需要手动创建autoreleasepool,GCD开辟子线程不需要手动创建autoreleasepool,因为GCD的每个队列都会自行创建autoreleasepool.
- 开不开线程,取决于执行任务的函数,同步不开,异步开。
- 开几条线程,取决于队列,串行开一条,并发开多条(异步)
- 主队列: 专门用来在主线程上调度任务的"队列",主队列不能在其他线程中调度任务!
- 如果主线程上当前正在有执行的任务,主队列暂时不会调度任务的执行!主队列同步任务,会造成死锁。原因是循环等待
- 同步任务可以队列调度多个异步任务前,指定一个同步任务,让所有的异步任务,等待同步任务执行完成,这是依赖关系。
- 全局队列:并发,能够调度多个线程,执行效率高,但是相对费电。 串行队列效率较低,省电省流量,或者是任务之间需要依赖也可以使用串行队列。
- 也可以通过判断当前用户的网络环境来决定开的线程数。WIFI下6条,3G/4G下2~3条。
参考博客 http://www.cnblogs.com/dsxniubility/p/4296937.html
https://blog.csdn.net/fel835/article/details/53979432(解答为什么串行队列,同步情况下不堵塞主线程)