1.解决下载大面积卡顿的问题
我开发的这款APP需要离线操作,有时候需要从阿里云上下载一些数据。
突然某一天,用户需要下载大量的文件,文件本身不大,但是多个1w-4W个时候,会发现,手机app出现卡顿,假死的现象。
我首先尝试了去掉并发操作,节省cpu资源。效果并不明显
最后,我开始尝试:
使下载并发队列的优先级来降级。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), block);
苹果推荐是:DISPATCH_QUEUE_PRIORITY_DEFAULT 但是这种设置明显会和主线程抢CPU资源!!!
改为LOW 主线程不卡顿了,写入文件操作不会时时执行了!
问题是:内存会持续升高,因为写入操作的延迟。
当文件数达到3W以上时,内存会在下载的后期爆掉,直接卡死无法使用。
最终解决方案:懒加载
一次性不再下载过多文件,使用懒加载,
有网络时,而且需要查看文件时才去下载文件。
使一次性操作变成: 多次性,碎片化的操作!!!
2.mj转模型额高级用法
这篇文章介绍地很清楚:
http://www.jianshu.com/p/11a8e15f7d2b
主要注意数组的用法,与属性名的一些替换。