6

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

view.document = [[[PDFDocument alloc] initWithURL: url] autorelease];

URL 是文件 URL。我想用自定义 NSURLProtocol 覆盖 URL 加载以支持自定义解密系统。我想使用文件 URL(而不是重定向加载 NSData),因为 PDF 可以包含指向其他 PDF 的链接,并且没有 URL 的加载将不支持这一点。

我在应用程序委托中注册了一个自定义 URL 协议:

 [NSURLProtocol registerClass: [MYURLProtocol class]];

+canInitWithRequest:从未调用过。我尝试过使用其他(自定义)模式,但它们给出了相同的结果。

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

4

1 回答 1

4

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

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

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

于 2012-12-08T22:45:03.013 回答