'NSBundle mainBundle' pathForResource 奇怪的行为

'NSBundle mainBundle' pathForResource strange behavior

我想不出任何关于 pathForResource 工作原理的韵律或原因……或者更恰当地说,不是。

我的应用程序中有一堆 nib,它们都在 /Build Phases/Copy Bundle Resources 中。

它们也在 File Inspector 选项卡的 Target Membership 中正确勾选。

为了简洁起见,我在这里只展示了 2 个案例。 当我到达我使用 pathForResource 的代码部分时,我得到了任意且不一致的结果。尽管我所有的笔尖都被命名为 ____.xib,但在某些情况下,我从 pathForResource 获得结果的唯一方法是如果我要求 xml 而其他时候我必须要求nib

有人知道为什么这种行为不一致吗?

这些结果对我来说并不特别令人惊讶或不一致。

.xib 文件是 NIB 的源文件。它们不应直接复制到应用程序中。它们在构建时被编译为 .nib 文件,正是这些 .nib 文件被复制到应用程序中。您不应该期望 pathForResource:... ofType:@"xib" 在您的应用程序中找到 .xib 文件。如果是这样,您就以某种方式搞砸了应用程序的构建。 .xib 文件在 运行 时间没有用。

大概与此无关,您有一个文件 TabSale.xml 处于 Copy Bundle Resources 构建阶段。那个文件直接复制过来的。如果您不打算复制原始 XML 文件——例如,如果这是一个应该在构建时转换为其他文件的源文件——那么您需要弄清楚为什么要复制它。如果出于某种原因它只是 TabSale.xib 的伪造副本,您应该将其删除。