【发布时间】:2011-11-23 10:21:23
【问题描述】:
我有一个问题:我想避免 [UIImage imageNamed:]。 所以我做到了:
UIImage *prodImg = [[UIImage alloc] initWithContentsOfFile:@"myimage.png"];
controller.productImg.image = prodImg;
[prodImg release];
但现在图像不再显示了。
有人知道如何让它工作吗?
【问题讨论】:
-
好的,我用 UIImage *prodImg = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"my image" ofType:@"png"]];
-
建议:只使用
[UIImage imageNamed:@"myimage.png"],因为它添加了缓存和设备扩展(“@2x”、“~ipad”)逻辑 -
使用 [UIImage imageNamed:@"myimage.png"] 我收到内存警告,请参阅此处alexcurylo.com/blog/2009/01/13/imagenamed-is-evil
-
这可能是因为您长时间使用 UIImages.. 如果您只是将它分配给 UIImageView 并且不保留它,那么您会没事的。并且在 iOS 上使用 jpg-Files 对内存消耗很危险(使用 png-format 和
pngcrush -iphone命令行工具)。 -
imageNamed 的 +1 是邪恶的。看到完全一样的效果。建议的解决方案消除了内存不足警告并消除了崩溃。
标签: objective-c xcode uiimage imagenamed initwithcontentsoffile