Q:

RestKit connection failure delegate

I'm trying to test the behavior of my app when connection fails.  I am testing on an iPad with wifi turned off.  When Restkit attempts a web service call, I get the following error:
CPL[7713:6203] E restkit.network:RKRequest.m:545 Failed to send request to https://xxxxxxxx/APNS_WebService/rest/operations/initializeDevice?deviceID=c4a17f855d3cc824b174b71908480d4e505ebfb221cb4643da9270a07344c367 due to unreachable network. 

The problem is that I would like to handle this situation in a delegate callback method, but none of the delegate methods are being called.  I have set the delegate on the request, and have requestDidFailLoadWithError, requestDidCancelLoad, requestDidTimeout, and objectLoaderDidFailWithError implemented.  None of these are called.  
Why aren't my delegates being called? 
EDIT: After setting a breakpoint inside RKRequest.m, I see that the following line is in fact being executed:
        [self performSelector:@selector(didFailLoadWithError:) withObject:error afterDelay:0];

However, my delegate methods are not getting called.  
Here's where I set the delegate:
request = [client requestWithResourcePath:[NSString stringWithFormat:@"/initializeDevice?deviceID=%@",deviceID]];
request.delegate=self;
[request sendAsynchronously];

EDIT 2: Actually, the line in RKRequest.m that I posted above is just calling another method in RKRequest, except that it's not.  Putting a breakpoint in didFailLoadWithError shows that this code is never reached.  I don't get why that's not working.  
Changing the performSelector to a regular method call appears on the surface to give me the behavior I'm looking for.  Is this going to break anything?  I guess I'm not sure why performSelector is being used to call a method in the same class.  
EDIT 3: As requested, here's my delegate method:
-(void)request:(RKRequest *)request didFailLoadWithError:(NSError *)error{
    NSLog(error.domain);
    NSLog([NSString stringWithFormat:@"%d",error.code]);
    NSLog(error.localizedDescription);
    NSLog(error.localizedFailureReason);

    [request reset];
    [request send];
}

A:

EDIT:

Actually, the line in RKRequest.m that I posted above is just calling another method in RKRequest, except that it's not.  Putting a breakpoint in didFailLoadWithError shows that this code is never reached.  I don't get why that's not working. 

This is really strange.  I would try doing a full clean of the project and rebuild. 
As to what entails a direct call instead of using performSelector, you can see that afterDelay:
[self performSelector:@selector(didFailLoadWithError:) withObject:error afterDelay:0];

this will make the didFailLoadWithError: method be called at the next iteration of the run loop.  I would keep this way of calling it. 
You could try, though, with this alternative:
dispatch_async(dispatch_get_current_queue(), ^() { 
                       [self didFailLoadWithError:error]; } );

I would suggest setting a breakpoint inside of the RestKit method you are using (I suppose sendAsynchronously) and check what happens.  If you look into the method definition, the call to the delegate is effectively there:
    } else {
        self.loading = YES;

        RKLogError(@"Failed to send request to %@ due to unreachable network.  Reachability observer = %@", [[self URL] absoluteString], self.reachabilityObserver);
        NSString* errorMessage = [NSString stringWithFormat:@"The client is unable to contact the resource at %@", [[self URL] absoluteString]];
        NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys:
                                  errorMessage, NSLocalizedDescriptionKey,
                                  nil];
        NSError* error = [NSError errorWithDomain:RKErrorDomain code:RKRequestBaseURLOfflineError userInfo:userInfo];
        [self performSelector:@selector(didFailLoadWithError:) withObject:error afterDelay:0];
    }

