在 xib 中分配的图像是不是缓存?

Posted

技术标签:

【中文标题】在 xib 中分配的图像是不是缓存?【英文标题】:Are Images assigned in a xib cached?在 xib 中分配的图像是否缓存? 【发布时间】:2012-05-01 13:43:22 【问题描述】:

如果我将图像分配给 xib 中的 UIImage 视图,是否会缓存该图像,以便如果我使用 UIImage imageNamed: 访问图像,我将获得缓存图像数据?

我使用的是 ios 5.1

【问题讨论】:

【参考方案1】:

UIImage imageNamed: 自己缓存您使用的任何图像。第一次将它用于给定图像时,它会填充缓存,随后会使用缓存的版本。

Interface Builder 中的UIImageView 接受一个字符串来告诉它要使用什么图像。看起来实际上在 Xib 中编码以表示图像的对象是一个名为 UIImageNibPlaceholder 的私有类,其中包含一个名为 runtimeResourceName 的私有 NSString 变量。正是这个类实现了initWithCoder: 方法,当系统从xib 加载对象时使用该方法。

那么,问题是,在UIImageNibPlaceholderinitWithCoder: 内部,是否使用了UIImageimageNamed: 函数?我认为假设它是合理的,因为存储在 xib 中的是字符串runtimeResourceName,并且系统在加载 xib 时将该字符串转换为实际图像。

Apple 开发者论坛上的This post 似乎澄清了这一点(根据 NDA,所以我不能在这里复制它)。我找不到任何关于该主题的公开信息。

【讨论】:

呵呵。我都准备只发布“是”,但后来我找不到太多证据:) 非常有趣的答案!但是,我认为它不使用imageNamed:,因为我有一个用于加载 h568 图像的实用程序,它会调动原始方法,并且在 IB 中设置图像时不会调用它。

以上是关于在 xib 中分配的图像是不是缓存?的主要内容,如果未能解决你的问题,请参考以下文章

在 CUDA 中分析常量缓存

在 codeigniter 2.1 中分析缓存使用情况

在flutter web上缓存图像,是不是需要?

如何在 Linux 中分配满足分页和缓存要求的内存?

检查设置的图像是不是与缓存中的图像相同

使用 image.complete 来查找图像是不是缓存在 chrome 上?