Conexión de webview XCode / manejo de errores del servidor

Todas,

Soy bastante nuevo en XCode y estoy tratando de entender cómo lidiar mejor con los problemas de conexión cuando intento usar un WebView. Sé que hay preguntas relacionadas con SO, pero ninguna parece ofrecer soluciones completas. Tengo el siguiente código, pero parece un poco ineficiente. Con suerte, alguien puede ayudarme a refactorizarlo hasta un punto en el que pueda usarse en cualquier lugar donde se llame UIWebView.

NOTA: ignore los problemas de memoria por ahora. Me doy cuenta de que también hay que agregarlo.

- (void)viewDidLoad {
    [webView setDelegate:self];

    NSString *urlAddress = @"http://www.somesite.com/somepage";
    NSURL *url = [NSURL URLWithString:urlAddress];
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];

    NSURLConnection *urlConnection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];

    [super viewDidLoad];
}

// Check for URLConnection failure
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    UIAlertView *connectionError = [[UIAlertView alloc] initWithTitle:@"Connection error" message:@"Error connecting to page.  Please check your 3G and/or Wifi settings." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [connectionError show];
    webView.hidden = true;
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {

    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;

    //Check for server error
    if ([httpResponse statusCode] >= 400) {
        UIAlertView *serverError = [[UIAlertView alloc] initWithTitle:@"Server error" message:@"Error connecting to page.  If error persists, please contact support." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
        [serverError show];
        webView.hidden = true;

    //Otherwise load webView
    } else {
        // Redundant code
        NSString *urlAddress = @"http://somesite.com/somepage";
        NSURL *url = [NSURL URLWithString:urlAddress];
        NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];

        [webView loadRequest:urlRequest];
        webView.hidden = false;
    }
}

// Seems redundant since we are already checking the URLConnection
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {

    UIAlertView *connectionError = [[UIAlertView alloc] initWithTitle:@"Connection error" message:@"Error connecting to page.  Please check your 3G and/or Wifi settings." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [connectionError show];
}

Supongo que lo que me pregunto es, ¿hay atajos para lograr la funcionalidad deseada? ¿Puedo acceder de alguna manera a URLResponse a través de WebView directamente? ¿Un valor nulo para URLConnection o UIWebView implica errores de conexión sin tener que verificarlos explícitamente? ¿Hay alguna manera más fácil de pasar la URLRequest a los métodos de delegado para que no se vuelva a crear dos veces?

¡Gracias por adelantado!

Respuestas a la pregunta(1)

Su respuesta a la pregunta