普通视图

发现新文章,点击刷新页面。
今天 — 2025年7月7日微言 | wyanassert

SDWebImage 弱引用缓存

作者 wyanassert
2025年7月7日 19:26

SDWebImage 是iOS 开发最流行的异步图片加载框架, 其中的缓存模块 SDImageCache 有一个很精巧的设计弱引用缓存, 源码参考

1
@property (nonatomic, strong, nonnull) NSMapTable<KeyType, ObjectType> *weakCache; // strong-weak cache

在我们的项目中引入了这个小修改, 整体的缓存命中率有1%左右的提升,

是否开启 内存缓存命中率 磁盘缓存命中率 下载命中率
开启弱引用缓存 67.99% 21.36% 10.67%
不开启弱引用缓存 66.76% 21.99% 11.25%

什么是弱引用缓存

  • 强引用表(NSDictionary), 对图片保持强引用, 保证缓存一定存在
  • 强引用表(NSCache), 对图片保持强引用, 且会随着系统内存大小/切换前后台自动清理缓存
  • 弱引用表(NSMapTable), 对图片保持弱引用, 只要图片还在内存中(被 UI 强引用 或被其他组件强引用), 就能命中缓存, 不消耗额外内存

引入了弱引用缓存的图片加载流程

昨天以前微言 | wyanassert

iOS图片编辑项目推荐

作者 wyanassert
2025年7月4日 19:18

在 GitHub 上确实有不少优秀且实用的 iOS 图片编辑相关的开源项目和 Demo。这些项目覆盖了基础编辑(裁剪、旋转、调整)、滤镜应用、涂鸦、贴纸添加、高级特效等功能。以下是一些值得关注的项目,适合学习和集成:


🛠 一、功能较全的图片编辑框架

  1. TOCropViewController

  2. YPImagePicker


🎨 二、滤镜 & 特效处理

  1. MetalPetal
    • 简介:基于 Metal 的高性能图像处理框架,支持滤镜链、实时渲染。
    • 链接https://github.com/MetalPetal/MetalPetal
    • 特点:替代 GPUImage,性能优异,适合复杂滤镜开发。

✏️ 三、涂鸦 & 标注工具

  1. SignatureView

  2. PencilKitExample


🧩 四、完整图片编辑 App Demo

  1. PhotoEditDebug


✅ 选择建议:

  • 需要快速集成裁剪功能TOCropViewController
  • 开发完整图片编辑 App → 参考 PhotoEditDebug
  • 实现高性能滤镜MetalPetal
  • 添加手绘涂鸦PencilKitSignatureView

💡 学习资源:

这些项目大多持续维护,代码质量较高。建议根据需求先尝试 Demo,再选择性集成模块到项目中!如果遇到具体实现问题,可以深入查看其 Issues 或源码实现逻辑。

❌
❌