Advertencia del compilador al pasar nserror ** como parámetro de método
-
25-09-2019 - |
Pregunta
He estado rascándome la cabeza sobre esto durante las últimas 4 horas, probando todo tipo de pequeños experimentos, pero parece que no puedo descubrir qué está mal. ¿Podría ser este un error del compilador?
Test.m:
- (id)initWithContentsOfURL:(NSURL *)aURL error:(NSError **)error
{
if (!(self = [super init])) {
return nil;
}
return self;
}
Main.m:
NSError *error;
Test *t = [[Test alloc] initWithContentsOfURL:[NSURL fileURLWithPath:@"/"] error:&error];
Aquí está la advertencia del compilador (de Main.m):
ADVERTENCIA: Tipos de Objetivo C incompatibles 'Struct nserror **', esperado 'estructura nsdictionary **' al pasar el argumento 2 de 'initwithContentsOfurl: Error:' desde el tipo de objetivo distintivo-C de tipo distintivo
Estoy usando las últimas versiones de Xcode y Snow Leopard.
Solución
Sospecho que está recogiendo una instancia diferente del selector, initWithContentsOfURL:error:
- quizás el de NSAppleScript
. Recuérdalo [NSObject alloc]
Devuelve un id
.
¿Su código funciona como se esperaba en el tiempo de ejecución?
Intente lanzar el regreso de [Test alloc]
a Test*
.
es decir
Test *t = [(Test*)[Test alloc] initWithContentsOfURL:[NSURL fileURLWithPath:@"/"] error:&error];