【问题标题】:NSDate Main Bundle CrashNSDate 主包崩溃
【发布时间】:2015-06-14 17:20:57
【问题描述】:

在 Matthew York 的 NSDate+DateTools 中,有一句话让我很崩溃:

#ifndef DateToolsLocalizedStrings
#define DateToolsLocalizedStrings(key) \
NSLocalizedStringFromTableInBundle(key, @"DateTools", [NSBundle bundleWithPath:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"DateTools.bundle"]], nil)
#endif

我将文件从另一个 Xcode 项目移到了这个新的 XCode 项目中。所以我认为它在 mainBundle 中寻找不存在的东西?我不确定发生了什么。谢谢....

【问题讨论】:

  • 1.这是 OSX 还是 iOS? 2. 完整的错误信息在哪里,将其添加到问题中。 3.不要使用#define,注意它是多么难以调试。 4.这应该是多语句方法,可能是类方法。 5. 问题是什么?
  • 感谢您的快速回复。在我看来,最有可能的情况是 DateTools.bundle 不在我的 App 包中。我该如何检查?
  • 如果你没有把它放在那里,它就不在那里。
  • 对了,现在有办法在 xcode 中看到这个吗?
  • 好的,那么我该如何获取该文件/捆绑包?

标签: objective-c nsdate


【解决方案1】:

这是非常不安全的编码。您需要检查每个参数实际上是否返回了不为零的内容。即使 resourcePath 也有可能返回 nil,但在您的情况下,“DateTools.bundle”很可能丢失或位于 App 包中的错误位置。

我真的不喜欢这样简洁的代码。它没有节省任何有用的东西,并且使调试变得痛苦。

【讨论】:

  • 好的,谢谢。如何访问 App 包并查看它是否存在?
  • 在 Xcode 中使用“存档”,然后使用查找器 Show PackageContents 移动到您的应用程序包中
  • 好的,如果我没有该文件/捆绑包,我该如何获取它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-27
  • 1970-01-01
相关资源
最近更新 更多