On Oct 20, 2014, at 6:47 PM, Daryle Walker <[email protected]> wrote:
> Over the weekend, I read the Programming Guide corresponding to NSThread. I
> just used one of the -performSelector: APIs. Easier than I anticipated,
> except for the fact the code isn’t working right now. (That’s on the general
> Cocoa list. Should I ask here too?)
Here’s a copy of that post, called “Can't get first try of NSURLProtocol
subclass to work.”:
> I entered a URL that triggers my handler, but I get this from the Xcode debug
> log:
>
>> 2014-10-20 07:42:08.968 MyApp[94134:303] *** Assertion failure in -[NSWindow
>> setTitle:], /SourceCache/AppKit/AppKit-1265.21/AppKit.subproj/NSWindow.m:2901
>> 2014-10-20 07:42:08.972 MyApp[94134:303] *** WebKit discarded an uncaught
>> exception in the webView:didFinishLoadForFrame: delegate:
>> <NSInternalInconsistencyException> Invalid parameter not satisfying: aString
>> != nil
>
> Here’s my -startLoading method. I tried “about:”, which is the only URL I
> handle directly in the method.
>
>> - (void)startLoading {
>> NSAssert([self.class canInitWithRequest:self.request], @"Inappropriate
>> request.");
>> NSAssert(!self.processing, @"Receiving new protocol request while
>> processing another.");
>>
>> // Handle the blank "about:" URL.
>> NSString * const path = self.request.URL.path;
>> NSString * const query = self.request.URL.query;
>>
>> if (!path || [path isEqualToString:@""]) {
>> if (query) goto error;
>> NSStringEncoding const encoding = NSUTF8StringEncoding;
>> NSData * const aboutData =
>> [@"<html><head><title>about</title></head><body>about:</body></html>"
>> dataUsingEncoding:encoding];
>>
>> [self.client URLProtocol:self didReceiveResponse:[[NSURLResponse
>> alloc] initWithURL:self.request.URL MIMEType:@"text/html"
>> expectedContentLength:aboutData.length
>> textEncodingName:nil/*(__bridge_transfer NSString
>> *)CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncoding(encoding))*/]
>> cacheStoragePolicy:NSURLCacheStorageNotAllowed];
>> [self.client URLProtocol:self didLoadData:aboutData];
>> [self.client URLProtocolDidFinishLoading:self];
>> } else {
>> NSString * const handler = AboutKeyToSelectorMap()[path];
>>
>> if (handler) {
>> self.processing = [NSThread currentThread];
>> self.cancelled = NO;
>> [self performSelector:NSSelectorFromString(handler)
>> withObject:query afterDelay:0.0 inModes:@[[NSRunLoop
>> currentRunLoop].currentMode, NSDefaultRunLoopMode]];
>> } else {
>> goto error;
>> }
>> }
>> return;
>>
>> error:
>> // Bad response.
>> [self.client URLProtocol:self didFailWithError:[NSError
>> errorWithDomain:NSURLErrorDomain code:NSURLErrorResourceUnavailable
>> userInfo:nil]];
>> }
>
> I thought using “nil” instead of the big expression calculating the encoding
> string would make a difference. It didn’t.
—
Daryle Walker
Mac, Internet, and Video Game Junkie
darylew AT mac DOT com
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Macnetworkprog mailing list ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/macnetworkprog/archive%40mail-archive.com
This email sent to [email protected]