我想将一个文件保存在内存中并将其提供给与 URL 一起使用的库(想想 NSURL)。如果我可以创建一些 iOS 可以使用 file:// 或类似文件访问的内存映射文件,那就太好了。
我的后备方法是创建一个本地服务器套接字,从内存中提供文件,但如果可能的话,我想找到一种更简洁的方法。
我想将一个文件保存在内存中并将其提供给与 URL 一起使用的库(想想 NSURL)。如果我可以创建一些 iOS 可以使用 file:// 或类似文件访问的内存映射文件,那就太好了。
我的后备方法是创建一个本地服务器套接字,从内存中提供文件,但如果可能的话,我想找到一种更简洁的方法。
我最终使用 NSURLProtocol 创建了一个从内存中提供文件的新 URL 方案。
我用它从网上读取文件并缓存在内存中:
- (NSCachedURLResponse *)connection:(NSURLConnection *)connection
willCacheResponse:(NSCachedURLResponse *)cachedResponse
{
NSCachedURLResponse *memOnlyCachedResponse =
[[NSCachedURLResponse alloc] initWithResponse:cachedResponse.response
data:cachedResponse.data
userInfo:cachedResponse.userInfo
storagePolicy:NSURLCacheStorageAllowedInMemoryOnly];
return [memOnlyCachedResponse autorelease];
}
那就是来自NSURLConnection的connection:willCacheResponse:方法。我的 NSURL 指向网络,但如果你指向你的包中的一个文件,它应该可以工作。我从https://github.com/rs/SDURLCache获得了该代码