新手问题。
我知道在模拟器中测试我的iPhone应用程序时,[NSBundle mainBundle]
并非所有资源文件都可用。我知道解决方案是引用[NSBundle bundleForClass:[self class]]
而不是mainBundle。
我的问题:
在部署应用时,[NSBundle bundleForClass:[self class]]
是否有效并且是不错的做法?
在app delegate中定义是不错的做法......
NSBundle *appBundle = [NSBundle bundleForClass:[self class]];
// or, for in final app
// NSBundle *appBundle = [NSBundle mainBundle];
...并在整个代码中使用appBundle
?否则我引用[NSBundle mainBundle]
的地方太多,我必须更改为bundleForClass:[self Class]
。
如果我使用这个appBundle定义,我应该做其他什么吗?也许在app委托终止之前释放appBundle?
谢谢!
苏莱曼
答案 0 :(得分:0)
mainBundle包含bundle中的所有内容,即目标(app)的资源。 XCode尝试将所有资产添加到捆绑包中,但有时会遗漏或有时您可能无意中告诉XCode不要将其复制到捆绑包中。重要的是要记住在发布之前只将应用程序需要的内容放入应用程序中 - 如果您有测试文件,请删除它们 - 因为它们会使您的应用程序变大,从而占用用户的存储空间和带宽。
要添加/删除/检查捆绑包中的内容,请转到文件/组检查器,XCode左上角的小文件夹图标。选择项目,这是最顶级的项目。如果您有多个目标,请选择目标。单击Build Phases并向下滚动到Copy Bundle Resources。这就是你管理被复制到包中的内容的地方。