【发布时间】:2009-09-18 00:10:45
【问题描述】:
我担心这是邪恶的代码:
CGRect iRect = CGRectMake(0.0f, 0.0f, 320.0f, 400.0f);
UIImageView *imgView = [[UIImageView alloc] initWithFrame:iRect];
imgView.animationImages = [NSArray arrayWithObjects:
[UIImage imageNamed:@"b0001.png"],
[UIImage imageNamed:@"b0002.png"],
// 150 more
[UIImage imageNamed:@"b0152.png"],
nil];
我稍微记得 imageNamed: 是邪恶的。如果我这样做,并且我必须提供 UIImage 对象,那么那些 UIImage 对象会立即将这些图像文件加载到内存中,对吗?而且,除此之外,所有这 152 个厚实的 UIImage 对象都会在内存中占用很大的内存,因为它们是自动释放的,不是吗?
总之,使用这种技术很糟糕。可以?我不知道。在我古老的第一代 iPod touch 上,这似乎以 25 fps 的速度运行,没有任何延迟。非常光滑和漂亮。我唯一担心的是其他一些设备可能对此有不同的看法。虽然我有最弱的可编程 ipod touch。
无论如何,有人认为那里有任何改进的可能性吗?还是我不应该使用它并在自己的算法中使用 UIImageView 的 setImage: ,该算法将使用该厚实的 imageWithContentsOfFile 事物(可能命名不同)加载和设置具有延迟选择器的那些图像,而无需自动释放?也许某个聪明人为包含图像序列的高性能拇指视频编写了一个小库?
(不,视频在 iphone 上不是一个选项;苹果框架只支持全屏,我不知道还有什么可以做到的)
【问题讨论】:
标签: iphone cocoa-touch video uikit uiimageview