2010-06-29 5 views
0

J'essaie de comprendre ce que cela fait dans chaque cas. Quelqu'un peut-il expliquer ce que le premier cas fait en détail et comment il diffère de la seconde? Merci :) //En quoi ces déclarations ObjC sont-elles différentes: qu'est-ce que cela fait vraiment?

//declare in first case 
NSManagedObjectModel *mom(); 

NSManagedObjectModel *mom() { 
static NSManagedObjectModel *mom = nil; 
//implementation goes here... 
return mom; 
} 

contre

//no declaration in second case 
- (NSManagedObjectModel *) mom { 
static NSManagedObjectModel *mom = nil; 
//implementation goes here... 
return mom; 
} 
+0

Eh bien, le premier échantillon de code n'est pas valide, pour les démarreurs. Aussi, l'un semble être une fonction et l'autre une méthode, donc la différence n'est pas "aucune déclaration". Les méthodes peuvent être déclarées comme les fonctions peuvent le faire. – Chuck

+0

@Chuck sûr que c'est; c'est une fonction C appelée 'mom' qui renvoie un' NSManagedObjectModel * '. –

+0

Était-ce correct d'implémenter une fonction C sans parenthèses ??? – Yuji

Répondre

3

La première est une fonction autonome; Ce n'est pas lié à une classe. Vous l'appelleriez comme:

NSManagedObjectModel *retVal = mom(); 

La seconde est une définition de méthode d'instance et est donc définie dans le contexte d'une classe. Vous l'appelleriez comme:

NSManagedObjectModel *retVal = [someObject mom]; 
Questions connexes