Aviso do compilador ao passar o NSerror ** como um parâmetro de método
-
25-09-2019 - |
Pergunta
Eu tenho coçado a cabeça sobre isso nas últimas 4 horas, experimentando todos os tipos de pequenos experimentos, mas não consigo descobrir o que está dando errado. Pode ser um bug do 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];
Aqui está o aviso do compilador (de main.m):
AVISO: Incompatível Objetivo-C Tipos 'Struct NSerror **', esperado 'StructionTy **' ao passar o argumento 2 de 'initWithContentsOfurl: Erro:' De Distinct Objective-C Type
Estou usando as versões mais recentes do Xcode e Snow Leopard.
Solução
Eu suspeito que está pegando uma instância diferente do seletor, initWithContentsOfURL:error:
- Talvez o de NSAppleScript
. Lembre-se disso [NSObject alloc]
retorna um id
.
Seu código funciona conforme o esperado em tempo de execução?
Tente lançar o retorno de [Test alloc]
para Test*
.
ou seja
Test *t = [(Test*)[Test alloc] initWithContentsOfURL:[NSURL fileURLWithPath:@"/"] error:&error];