1

我在某处读到,Apple 鼓励在路径和文件位置方面使用 NSURL 而不是 NSString,这在新的(er)API 中变得越来越明显——如果我错了,请纠正我。这个Stack Overflow 问题特别涉及这个主题。

但是,我注意到一些 API 在使用 NSURL 和 NSString 方面似乎不一致 - 特别是 NSFileManager。例如,NSFileManager 有一个方法 fileExistsAtPath:(它接受一个 NSString 作为唯一的参数),但是没有一个等价的方法接受一个 NSURL 作为参数。但是,要删除文件,有一个采用 NSString 的方法和一个采用 NSURL 的等效方法。

这种差异是有原因的还是在历史上有所增长?

4

2 回答 2

4

可能是因为他们想阻止使用存在检查。正如标题相当外交地说的那样:

以下方法的效用有限。尝试基于文件系统的当前状态或文件系统上的特定文件来预测行为会在文件系统竞争条件下鼓励奇怪的行为。尝试操作(例如加载文件或创建目录)并优雅地处理错误比尝试提前确定操作是否成功要好得多。

于 2012-05-29T06:11:44.187 回答
1

我很确定这只是 NSString 方面的一些遗留代码,因为看起来它们确实正在向 NSURL 进行大致称为文件操作的操作。

此外,您引用的 SO 问题很好地说明了为什么 NSURL 更受欢迎:

NSURL 也有 URLByAppendingPathComponent: 和 URLByAppendingPathExtension: 所以也很方便:-)

于 2012-05-29T05:54:58.857 回答