我只能在特定应用程序中使用 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/