objective-c - 有没有办法使用内存映射文件访问从文件创建 CFData 对象?

标签 objective-c macos cocoa-touch cocoa core-foundation

我只能在特定应用程序中使用 CoreFoundation,并且无权访问 NSData

我需要使用内存映射访问文件中的数据,因为文件可能非常大。使用 NSData,我可以使用 +dataWithContentsOfURL:options:error: 方法实现这一点,并传入 NSDataReadingMappedAlways 选项。

是否可以使用 CFData 来做到这一点?我能找到的唯一一个直接从文件实际创建 CFData 对象的函数是 CFURLCreateDataAndPropertiesFromResource() 函数,它没有任何设置内存映射标志的选项。

是否有使用内存映射读取从文件中加载 CFData 对象的低级方法?我是否必须下拉到 mmap 或其他内容?

最佳答案

您可以从字节缓冲区和计数创建 CFData()。鉴于此,您应该能够 mmap() 有问题的文件,然后将映射的字节缓冲区传递给 CFDataCreateWithBytesNoCopy()。唯一真正复杂的是您需要使用一个 CFAllocatorRef,它知道如何将 munmap() 作为 bytesDeallocator

关于objective-c - 有没有办法使用内存映射文件访问从文件创建 CFData 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12611798/

相关文章:

python - 当 localhost 和 MacOSX 正常工作时,可以通过本地 ip 地址访问 AppEngine SDK 站点

objective-c - LLDB 相当于 GDB 的宏

python - QTKit 导致 OpenCV 安装失​​败

ios - 如何执行 UIAlertAction 的处理程序?

python - 如何在 Mac OS X 上为 Python 3 安装 pip?

ios - 防止 dispatch_after() 后台任务被执行

objective-c - 如果比较两个 NSString 对象时 "a == b"为假

iOS 开发 : Segue by pressing a button in an Alert?

ios - 如何从一个 Storyboard切换到另一个 Storyboard

objective-c - 这将如何从 Obj-C 转换为 Swift?