sigo obteniendo errores Clang en el siguiente tipo de código y no puedo averiguar por qué son erróneas o cómo resolverlos a satisfacción del Sonido metálico:Clang Error en "Deferencia nula potencial".
+ (NSString *)checkForLength: (NSString *)theString error: (NSError **)error {
BOOL hasLength = ([theString length] > 0);
if (hasLength) return theString;
else {
*error = [NSError errorWithDomain:@"ErrorDomain" code:hasLength userInfo:nil];
return nil;
}
}
Dejando a un lado la naturaleza completamente artificial, de la ejemplo (que Clang objetó, por lo que es suficientemente ilustrativo), Clang rechaza la línea de asignación de error con la siguiente objeción:
Posible deferencia nula. De acuerdo con los estándares de codificación en 'Creación y devolución de
NSError
Objetos', el parámetro 'error' puede ser nulo.
Me gusta tener un informe prístino de Clang. He leído el documento citado y no veo la manera de hacer lo que se espera; Revisé algunas bibliotecas de código abierto de Cocoa y esta parece ser una expresión común. ¿Algunas ideas?
Ugh, no puedo creer que me haya olvidado de eso. ¡Gracias! – bbrown
Usé un millón de veces 'if (error) * error = ...' en su lugar, sin bloqueos ni errores/advertencias del analizador. ¿Puedo seguir así? –
Sí, la equivalencia explícita de un puntero nulo a 0 y falso es algo objetivo C conservado de antiguo C. Pienso que es un estilo malo, pero sí puedes simplemente usar 'if (error)' si realmente quieres. –