6

URL で PDFDocument を初期化し、それを PDFView に割り当てた場合:

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

URL はファイル URL です。カスタム復号化システムをサポートするために、URL の読み込みをカスタム NSURLProtocol で上書きしたいと考えています。PDFには他のPDFへのリンクを含めることができ、URLなしでロードするとこれがサポートされないため、(NSDataをリダイレクトしてロードするのではなく)ファイル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 に答える