2010-11-28 19 views
1

J'écris le code suivant, mais pourquoi le compilateur n'affiche pas d'avertissement ou d'erreur?const return valeur de la fonction

const computer* const activeComputer = [self.setting getActiveComputer]; 
activeComputer.name = [service name]; 
activeComputer.ipAddr = ipAddress; 

déclaration de la fonction getActiveComputer

- (const computer* const) getActiveComputer 
+0

Est-ce que 'computer' est une' struct' ou un objet? Cela fait une différence. – jer

Répondre

4

notation Dot en C objectif est sténographie pour appeler un objet getter/setter méthodes. Qu'est-ce que vous avez serait équivalent à:

[activeComputer setName:[service name]]; 

Je pense que l'appel d'une méthode ne serait pas violer la déclaration const donc il n'y a pas d'avertissement.

+0

Salut, il semble que vous comprenez mal, je veux dire le complicateur DEVRAIT donner un avertissement et une erreur pour mon code, mais le compilateur ne donne pas d'erreur ou d'avertissement, en fait, je ne sais pas pourquoi. – user497032

+0

Objective-C ne supporte pas les objets 'const', et l'explication donnée par @darren est correcte. Le compilateur n'a aucun moyen de savoir, et il n'y a aucun moyen d'indiquer, qu'une méthode peut ou ne peut pas être utilisée sur un objet 'const'. Apple résout cela en utilisant des sous-classes mutables, comme avec NSArray et NSMutableArray. –

+0

Il est déroutant d'avoir un nom de classe avec une lettre minuscule au début .... – bbum