NSFileManager fileExistsAtPath:在iOS4.1上与SIGABRT崩溃,为什么?

时间:2010-10-24 22:00:29

标签: iphone nsfilemanager sigabrt

以下是我正在使用的代码:

NSFileManager* defaultMgr = [NSFileManager defaultManager];
if (![defaultMgr fileExistsAtPath:path]) {
 return nil;
}

其中path是系统上文件的URL,如:“file:// localhost / private / var / mobile / Applications / blahblahblah”

当调用fileExistsAtPath:时,这会与SIGABRT崩溃。该文件确实存在,并且字符串格式可能不是此方法所希望的,但它应该只返回NO。这段代码是一个非常受欢迎的库的一部分,虽然我不需要检查路径的存在,但我真的想了解这里发生了什么,以防我需要直接使用这个方法。

特别地:

  1. 图书馆作者是否正确使用此方法?
  2. 如何从这种方法中捕获或预期异常? (SDK文档不讨论此方法可能抛出的异常。)
  3. 这是我应该向Apple报告的错误吗?
  4. 还有一个细节:我在带有iOS 4.1的iPhone 4设备上运行它

1 个答案:

答案 0 :(得分:0)

我想到了一些问题:

1)NSFileManager使用路径而不是URL。不需要“file://”。

2)它需要像@“......”这样的NSStrings。

3)您应该尝试将文件路径保留在应用程序的沙箱中。