【发布时间】:2012-05-01 13:43:22
【问题描述】:
如果我将图像分配给 xib 中的 UIImage 视图,是否会缓存该图像,以便如果我使用 UIImage imageNamed: 访问图像,我将获得缓存图像数据?
我使用的是 iOS 5.1
【问题讨论】:
标签: ios ios5 interface-builder uiimage xib
如果我将图像分配给 xib 中的 UIImage 视图,是否会缓存该图像,以便如果我使用 UIImage imageNamed: 访问图像,我将获得缓存图像数据?
我使用的是 iOS 5.1
【问题讨论】:
标签: ios ios5 interface-builder uiimage xib
UIImage imageNamed: 自己缓存您使用的任何图像。第一次将它用于给定图像时,它会填充缓存,随后会使用缓存的版本。
Interface Builder 中的UIImageView 接受一个字符串来告诉它要使用什么图像。看起来实际上在 Xib 中编码以表示图像的对象是一个名为 UIImageNibPlaceholder 的私有类,其中包含一个名为 runtimeResourceName 的私有 NSString 变量。正是这个类实现了initWithCoder: 方法,当系统从xib 加载对象时使用该方法。
那么,问题是,在UIImageNibPlaceholder 的initWithCoder: 内部,是否使用了UIImage 的imageNamed: 函数?我认为假设它是合理的,因为存储在 xib 中的是字符串runtimeResourceName,并且系统在加载 xib 时将该字符串转换为实际图像。
Apple 开发者论坛上的This post 似乎澄清了这一点(根据 NDA,所以我不能在这里复制它)。我找不到任何关于该主题的公开信息。
【讨论】:
imageNamed:,因为我有一个用于加载 h568 图像的实用程序,它会调动原始方法,并且在 IB 中设置图像时不会调用它。