PDFDocument不使用自定义URL协议

die*_*ikh 6 cocoa objective-c quartz-2d

如果已使用URL初始化PDFDocument并将其分配给PDFView:

view.document = [[[PDFDocument alloc] initWithURL: url] autorelease];
Run Code Online (Sandbox Code Playgroud)

URL是文件URL.我想用自定义NSURLProtocol覆盖URL加载以支持自定义解密系统.我想使用文件URL(而不是直接加载NSData),因为PDF可以包含指向其他PDF的链接,而没有URL的加载将不支持此功能.

我在app delegate中注册了一个自定义URL协议:

 [NSURLProtocol registerClass: [MYURLProtocol class]];
Run Code Online (Sandbox Code Playgroud)

但从+canInitWithRequest:未被称为.我尝试过其他(自定义)架构,但它们会给出相同的结果.

从文件URL加载WebView时,会调用相同的+ canInitWithRequest:.

Dad*_*Dad 4

NSURLProtocol类文档让我觉得 NSURLProtocol 子类仅在通过 NSURLConnection (或 NSURLDownload)加载 NSURL 时使用:

应用程序永远不需要直接实例化 NSURLProtocol 子类。当下载开始时,NSURLConnection 创建 NSURLRequest 的适当 NSURLProtocol 子类的实例。

所以这可能是您遇到问题的根本原因。有趣的是,通过 NSURLConnection 和关联的 NSURLRequest 抓取文件,看看你的 NSURLProtocol 子类是否按照你的预期被调用;我怀疑会的。