在 macOS(也可能是 iOS)应用程序中打开资源文件的最直接方法是什么?[关闭]

What is the most directest way to open() a resource file in a macOS (maybe also iOS) app? [closed]

提问人:user22200698 提问时间:10/12/2023 最后编辑:user22200698 更新时间:10/12/2023 访问量:56

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

上个月关闭。

所以我想在 Objective-C 中打开一个 ing 的纹理文件:mmap()

const int fd = open([[[NSBundle mainBundle] pathForResource:@"Texture" ofType:nil] UTF8String], O_RDONLY);

我还有一个 Swift 版本:

let fd = open((NSBundle.mainBundle.path(forResource: "Texture", withExtension: nil) as NSString).UTF8String)

但我不确定这些是否是执行这项任务的最有效、最直接的方法。

避免最不必要的计算的最快方法是什么,只需从应用中的资源文件中获取文件描述符?

我只是想确保我没有使用比我需要的优化程度更低的版本。我不知道 Objective-C 或 Swift 的答案是否不同,所以我都做了。

iOS Swift Objective-C macOS 资源

评论

3赞 HangarRash 10/12/2023
你到底想解决什么问题?您的代码中是否有需要优化的已知瓶颈?为什么要用两种语言提问?
2赞 JeremyP 10/12/2023
您正在打开磁盘上的文件。仅此操作就会使您为获取系统调用的 C 字符串而进行的计算相形见绌。您每秒打开纹理文件多少次?如果不是“数千”,我不会担心。
2赞 Alexander 10/12/2023
这是高级和低级代码的奇怪混合,即使在 Objective C 中也是如此。 Foundation 将该类作为对文件描述符 int 等的抽象提供。这段代码在 Swift 中看起来不错,但我可能只使用 FileHandle。我建议使用 ,一个带有 的类,甚至可能是一个不可复制的结构,以确保不会被遗忘NSFileHandleopendeferdeinitclose

答: 暂无答案