Yaoyuan Guo
Yaoyuan Guo
可能有很多原因: - Object 没有实现 NSCoding 协议,或者实现有问题 - 缓存达到上限被清理(age、cost、count) - 磁盘缓存被系统清理并重启了 App - 使用方法错误 - 其他问题
能提供一个简单的可以复现问题的代码片段或者 Demo 吗?上面的代码无法运行,也暂时看不出问题,这样很难定位问题。
Google 了下,貌似与 Xcode 8 下子工程的 “Deployment Target” 设置有关。。
是的,对象必须要自己实现完整的 NSCoding 协议。
多线程的并发是用时间片轮转等方法实现的,iPhone 的 CPU 只有两个核心,所以过多线程同时存在仍然可能会造成对主线程的影响。另外线程创建、销毁、上下文切换等也会消耗很多 CPU 资源。有些任务内部会有全局的锁(比如 readme 里提到的 CoreText 绘制时的 CGFont 内部锁),这样增加并发并没有作用,反而会带来诸如 readme 中那样的问题。 GCD 通常来说不会造成主线程卡顿,上面说的这些只是比较极端一些的情况,YYDispatchQueuePool 只是在这种极端情况下控制并发数的不得已的一个解决思路。
额。。神马意思?
额。。 相对来说《iOS Core Animation: Advanced Techniques》还算不错吧。
1. 先排除你的代码中是否有循环引用导致的问题 2. 检查网络图片是否有尺寸过大的(比如几千x几千像素的) 3. 如果没有问题,那是这就正常现象,图片被缓存到内存,当收到内存警告或 App 退到后台会缓存自动释放。如果希望手动控制缓存上限,可以设置 [YYImageCache sharedCache].memoryCache 中的 costLimit 和 costLimit。
可能是个 Bug,稍后看一下。
是的,key path 的语法只支持 dictionary。。 这中映射,可以在 modelCustomWillTransformFromDictionary 或者 modelCustomTransformFromDictionary 中额外处理一下。