Voici un caractère étrange. J'ai une classe nommée TileMap
avec l'interface suivante:'TileMap' peut ne pas répondre à '+ mapNamed:'
@interface TileMap : NSObject
{
int *data;
int tilesWide;
int tilesHigh;
NSString *imageName;
}
+ (id)mapNamed:(NSString *)filename;
- (id)initWithFile:(NSString *)filename;
@end
La mise en œuvre ressemble à ceci:
@implementation TileMap
+ (id)mapNamed:(NSString *)filename
{
return [[self alloc] initWithFile:filename];
}
- (id)initWithFile:(NSString *)filename
{
if (self = [super init])
{
// ...
}
return self;
}
@end
Mais quand j'ajoute un appel à [TileMap mapNamed:@"map.plist"];
à ma demande Xcode met en garde:
'TileMap' ne peut pas répondre à '+ mapNamed:'
L'application compile bien et les appels à NSLog
au sein de TileMap-initWithFile:
sont enregistrés. J'ai remarqué que la coloration syntaxique de Xcode était désactivée pour cette classe et cette méthode, j'ai donc essayé de renommer la classe et la méthode séparément. La seule combinaison qui a éliminé les problèmes d'avertissement et de coloration syntaxique était de renommer la classe et la méthode. Est-ce que je suis en collision avec une classe ou une méthode de cadre non documentée? Trouver dans la documentation ne révèle rien. Find in Project ne révèle que l'appel, la définition de l'interface et l'implémentation. Je suis perplexe (pas qu'il en faut beaucoup). Y a-t-il un moyen de contourner cela sans mélanger mes conventions de nommage existantes?
* tête dans la honte se bloque * J'ai un framework.h qui importe tous mes en-têtes cadres comme ceci:. \t // ... \t #import "State.h" \t #import « tilemap .h " \t // ... Puis j'importe framework.h dans des fichiers non-framework, dans ce cas TitleState.h (qui étend' State'). Aucune des autres classes et méthodes importées de cette manière ne provoque une coloration d'avertissement ou de syntaxe, mais vous avez raison. Supprimer le '#import" TileMap.h "' de framework.h et l'ajouter directement à TitleState.m élimine l'avertissement (les problèmes de coloration syntaxique persistent mais je peux vivre avec ça). –
Je pensais que cela répondait à ma question mais en y réfléchissant un peu plus, pourquoi n'est-ce pas un problème si je renommais la classe et la méthode? –