avertissement du compilateur lors du passage NSError ** comme paramètre de procédé
-
25-09-2019 - |
Question
J'ai gratté ma tête à ce sujet pendant les 4 dernières heures, essayer toutes sortes de petites expériences, mais je ne peux pas sembler comprendre ce qui se passe mal. Serait-ce un bug du compilateur?
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];
Voici l'avertissement compilateur (de main.m):
avertissement: Objective-C incompatible de struct de NSError ** 'types, prévu 'Struct NSDictionary **' lors du passage argument 2 de 'InitWithContentsOfURL: Erreur:' de distinct de type C Objectif
J'utilise les dernières versions de Xcode et Snow Leopard.
La solution
Je pense qu'il est ramasser une autre instance du sélecteur, initWithContentsOfURL:error:
- peut-être celui de NSAppleScript
. Rappelez-vous que [NSObject alloc]
retourne un id
.
Votre code fonctionne comme prévu lors de l'exécution?
Essayez le retour de coulée [Test alloc]
à Test*
.
i.e..
Test *t = [(Test*)[Test alloc] initWithContentsOfURL:[NSURL fileURLWithPath:@"/"] error:&error];