Domanda

Disclaimer: sono abbastanza nuovo a OBJ-C e iOS (5, ARC abilitato).

La seguente implementazione di un metodo NsurlConnectionDelegate crea Exc_Bad_Access nella chiamata NSLog all'interno di IF:

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

    NSLog(@"Response %@", response );
    if([response isKindOfClass:[NSHTTPURLResponse class]])
    {
        NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*) response;
        NSLog(@"HTTP status code %@", [httpResponse statusCode]);
    }
}

Per quanto sono riuscito a scoprirlo, Exc_Bad_Access è causato principalmente a causa di problemi di allocazione, casting errati e cattiva gestione della memoria. Niente di tutto ciò si applica qui (spero).

Grazie in anticipo, Chris

Soluzione: Errore Noobie nella formattazione della stringa OG. Cambia il secondo NSLog in:

NSLog(@"HTTP status code %i", [httpResponse statusCode]);
È stato utile?

Soluzione

statusCode Restituisce un NSInteger (un long o un int), non un puntatore a un NSObject esempio.

L'agente specificatore del formato %@ è usato per NSObjectargomenti. Il problema probabilmente si verifica quando il valore intero che viene restituito statusCode viene interpretato/passato come puntatore a un oggetto e quindi messaggi o altrimenti trattati come puntatore a un oggetto dal runtime. Quando viene stampato un argomento oggetto tramite %@ Il logger utilizza il risultato dell'oggetto -[NSObject description].

Puoi evitare questo problema in futuro, rivelando i tuoi avvertimenti del compilatore e correggendo i problemi che genera.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top