(iPhone)当存在多个同名文件时,使用imageNamed会发生什么?

7

正如问题所述,当资源目录中存在多个具有相同名称的文件时,imageNamed是如何工作的?

是否有一种方法可以区分具有相同名称但不同路径的两个不同文件?

谢谢

1个回答

8
任何Xcode包中的文件夹都是“组”。也就是说,它们不是实际的目录。这些组中的文件仍位于包的根目录中。
因此,在应用程序包中有两个(或更多)具有相同名称的文件是不可能的。
参见:http://majicjungle.com/blog/?p=123 组的问题:
当将其复制到iPhone应用程序时,目录结构会丢失,因此在应用程序包内只有所有资源的基本目录的大列表。由于这个原因,重复的文件名成为一个问题。如果磁盘上的目录结构中的任何文件包含相同的文件名,则构建过程会悄悄地出错。似乎是“先到先得”,只有一个资源进入应用程序包。因此,如果您有一堆包含不同“Terrain.png”文件的不同级别包,则没有任何好处。
如果通过创建文件夹引用来维护目录结构,则可以消除重复文件名的问题。但是,检索文件是个问题。
您可以使用NSBundle类来解决这个问题:
[[[NSBundle mainBundle]resourcePath]stringByAppendingPathComponent:@"path/to/file.jpg"]

啊,当我向项目添加文件时,可以使用“递归地为所有添加的文件夹创建组”和“为所有添加的文件夹创建文件夹引用”的选项进行添加。如果我使用第二个选项,则可能会有两个具有相同名称的文件。不知道我是否可以在以那种方式添加的文件上使用“imageNamed”。 - eugene
NSBundle方法会将图像缓存为imageNamed吗? - eugene
以上示例检索文件的路径。应将其用作UIImage imageNamed方法的参数。 - Evan Mulawski
尝试使用imageNamed失败后,看起来我需要使用imageWithContentsOfFile并使用返回的路径。 - eugene
啊,是的。这就是我试图凭记忆回忆文档内容的结果。很高兴你已经解决了问题。 - Evan Mulawski
你可以选择创建附加的包含不同资源集的包,并将其包含在主要包中。 - Andy J Buchanan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接