2010-05-24 4 views
2

Pourquoi compiler sans erreurs ou avertissements?Noms de méthodes en double - Objective-c

@interface ObjectTest : NSObject { 

} 
-(void)iAmADoubleMethod; 
-(void)iAmADoubleMethod; 
@end 

@implementation ObjectTest 
-(void)iAmADoubleMethod { 
    NSLog(@"IAmADoubleMethod"); 
} 
@end 

Je suis tombé sur ceci dans un projet sur lequel je travaille. Je viens d'un arrière-plan C++, donc je pense que je devrais avoir au moins un avertissement pour ça. Non seulement j'aimerais savoir pourquoi cela est conforme, mais ce code pourrait-il causer des problèmes?

Merci.

+0

Je vais mettre cela comme un commentaire parce que je ne suis pas sûr que c'est correct mais: Je crois que cela fonctionne parce que la norme C dit que vous pouvez avoir un certain nombre de déclarations tant qu'il n'y a qu'une seule définition. par exemple, vous pouvez déclarer un int x dans de nombreux fichiers, mais vous ne pouvez définir l'espace de la variable que dans un seul endroit. –

Répondre

10

Vous venez de déclarer la méthode deux fois. Les déclarations ne sont pas en conflit, donc ce n'est pas un problème. C'est la même chose que si vous aviez déclaré une fonction plusieurs fois dans un programme simple C ou C++.

+0

Je le pensais, +1 –

+0

Merci, peut-être un jour je vais lire les normes. Probablement pas :) – NixonsBack

Questions connexes