【发布时间】:2010-10-22 19:48:35
【问题描述】:
我读到 imageNamed: 在尝试初始化图像时很糟糕。但是,最好的方法是什么?我正在使用 imageWithContentsOfFile: 并在我的资源文件夹中传递图像的路径
[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imageName ofType:@"jpg"]
这个调用在一个 for 循环中进行了大约 30 次。
现在,当我使用仪器运行我的应用程序时,我发现 NSString 占用了大量内存来执行上述操作,其中我们使用字符串文字 (@"jpg") Instruments 将负责的调用者显示为 [NSBundle mainBundle],当我使用字符串文字作为类型时,这又指向该行。
那么在不占用太多内存的情况下初始化图像最有效的方法是什么?
我把语句改成
img = [UIImage imageWithContentsOfFile:[bndl pathForResource:fileName ofType:extn]]
其中extn 是静态的并初始化为@"jpg"。 fileName 在 for 循环的每次迭代中不断变化。但即便如此,根据 Instruments 的说法,NSString 的最大使用量还是因为 [NSBundle mainBundle] 和 [NSBundle pathForResource:OfType:]。
【问题讨论】: