sheepy1
ID:
367
sheepy1
sheepy1
2016-01-27
  • 『看知乎』iOS 版 2016-01-29 01:24:28 +0800

    @hugrup 用 GIFBrewery

  • 『看知乎』iOS 版 2016-01-27 23:48:23 +0800

    @dugege 我没有使用任何第三方库,觉得没必要用 pod 啊。

  • 『看知乎』iOS 版 2016-01-27 23:45:52 +0800

    @iBcker 多谢阅读哈。因为是个人项目,主要还是为了练手,所以想从头到尾都自己实现。你说的几点我可以稍微解释下: + 重置图片的操作是放在 UIImage 的扩展方法 setImageWithId 里的。 + 同时下载一组图片的时候,返回图片的顺序是随机的,如果不做处理的话,因为 Cell 的重用机制,确实会造成图片错位现象。所以我在设置图片的时候传入一个 flag(model 的 id 或者 cell 的 index),将这个 flag 赋给 Cell 的 tag,然后去取图片,当图片返回的时候,比较 flag 跟 当前显示 cell 的 tag 是否一致,只有一致的时候才设置图片。 + 我确实没有提供 cancel 操作,因为当时觉得没有太大必要,就算滑得快的时候滑过了很多图片其实并不需要立即显示它们,不过也可以先下载缓存下来,就当预加载了,反正不阻塞 UI。 + 光用 NSCache 做缓存确实不太妥,有时间再加个文件缓存,这样就是一般图片库用的内存 + 文件二级缓存了。 + 我这边的 model 用 struct 是不可以的……因为 JSON 和 model 的转换我是用 Swift 的反射 + OC Runtime 的 KVC 做的,struct 这样的值类型根本就不支持 KVC。不过我那个简陋的 JSON 解析库有时间我也得好好优化一下,或者换个思路,到时候可能就可以使用 struct 了。

    总之还是多谢提供建议哈 ^ ^