NSURLProtocol canInitWithRequest вызывается для http URL, но не для URL файла - PullRequest
0 голосов
/ 04 февраля 2020

В настоящее время я пытаюсь реализовать пользовательское NSURLProtocol в приложении Ma c, которое может перехватывать запросы файловых URL.

Я скопировал фиктивный метод canInitWithRequest из этого руководства

+ (BOOL)canInitWithRequest:(NSURLRequest *)request {
    static NSUInteger requestCount = 0;
    NSLog(@"Request #%lu: URL = %@", (unsigned long)requestCount++, request.URL.absoluteString);
    return NO;
}

и зарегистрирован пользовательский NSURLProtocol в приложении AppDelegate:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    [NSURLProtocol registerClass:[MyURLProtocol class]];
}

Теперь, если я выполняю следующий код, пользовательский canInitWithRequest вызывается, как и ожидалось:

NSURL *url = [NSURL URLWithString:@"http://www.stackoverflow.com"];
NSData *data = [NSData dataWithContentsOfURL:url];

Однако, если я изменю строку в приведенном выше коде на (действительный) URL-адрес файла, пользовательский canInitWithRequest больше не будет вызываться:

NSURL *url = [NSURL URLWithString:@"file:///valid/file/url"];
NSData *data = [NSData dataWithContentsOfURL:url];

Есть ли что-то особенное в URL файлов, которое я пропускаю?

...