2015-03-03 67 views
0

新手问题。如何在应用程序测试期间访问资源

我知道,在模拟器中测试我的iPhone应用程序时,并非所有资源文件都在[NSBundle mainBundle]中可用。我知道解决方案是指[NSBundle bundleForClass:[self class]]而不是mainBundle。

问题,我有:当应用程序部署和它是很好的做法

  1. 是指的[NSBundle bundleForClass:[self class]]有效?

  2. 它是很好的做法,在应用程序委托定义...

    NSBundle *appBundle = [NSBundle bundleForClass:[self class]]; 
    // or, for in final app 
    // NSBundle *appBundle = [NSBundle mainBundle]; 
    

...和使用appBundle整个代码?否则,有太多的地方,我指的是[NSBundle mainBundle],我将不得不改变为bundleForClass:[self Class]

如果我使用这个appBundle定义,我应该做其他事情吗?也许在应用程序委托结束之前释放appBundle?

谢谢!

苏莱曼

+2

在什么情况下你看到'mainBundle'不工作?如果它在模拟器不起作用,那么它不应该工作.. – Wain 2015-03-03 13:30:22

+0

我猜你没有将资源添加到应用程序包,这就是为什么他们没有显示出来。该包中的任何资源都位于mainBundle中。要为资源添加或删除资源,请单击左上角的小文件夹(文件夹视图),然后单击顶部的项目,然后单击目标(​​如果您有多个),然后显示“复制软件包资源”选项卡。从你所描述的内容来看,我猜测你想要的资源不会在那里。 – 2015-03-03 14:11:49

+0

@Wain,当在模拟器中运行应用程序时,并不是所有资源都在主包中找到。 – Sleiman 2015-03-03 14:54:15

回答

0

mainBundle包含包内的一切,为你的目标(应用程序)的资源。 XCode会尝试将所有资产添加到捆绑软件中,但有时会错过或其他时候您可能无意中告诉XCode不要将其复制到捆绑软件中。重要的是要记住,只有在发布之前将应用程序需要的东西放入包中 - 如果您有测试文件,请将其删除 - 因为它们会让您的应用程序变大,从而消耗用户存储空间和带宽。

要添加/删除/检查包中的内容,请转到文件/组检查器,即XCode左上方的小文件夹图标。选择最顶级的项目。如果您有多个目标,请选择一个目标。单击构建阶段并向下滚动到复制包资源。这就是你管理复制到包中的东西的地方。

相关问题