PDFDocument不使用自定义URL协议

时间:2012-11-30 10:38:56

标签: objective-c cocoa quartz-2d

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

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

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

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

 [NSURLProtocol registerClass: [MYURLProtocol class]];

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

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

1 个答案:

答案 0 :(得分:4)

NSURLProtocol class documentation让我听起来像NSURLProtocol子类仅在通过NSURLConnection(或NSURLDownload)加载NSURL时使用:

  

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

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