2010-04-22 4 views
0

Dans le code suivant, j'ai passé le "1.3f" à printFloat, mais c'était la mauvaise valeur (dans ce cas, -2.000000) après avoir reçu "f". Et il y a un avertissement que "AppDelegate ne peut pas répondre à -printFloat:"Comment pourrais-je transmettre le nombre flottant par valeur en Objective-C?

Où est-ce que je me suis trompé?

- (void)applicationDidFinishLaunching:(UIApplication *)application{ 
    // Override point for customization after application launch 
    [window makeKeyAndVisible]; 
    [self printFloat:1.3f]; 
} 

- (void)printFloat:(float)f { 
    NSLog(@"%f",f); 
} 
+0

est 'printFloat:' a déclaré dans l'interface? Sinon, je suppose, c'est dû à la promotion flottante/double. – Dirk

Répondre

2

Vous pouvez facilement résoudre vos deux problèmes en ajoutant le prototype de la méthode dans le fichier d'en-tête (<sameName>.h):

- (void)printFloat:(float)f; 
+0

Merci! Ma publicité, désolé de poser une question basse. –

+0

pourriez-vous marquer la réponse comme résolue? THX :) – Cesar

0

Si vous incluez la définition correcte dans le fichier d'en-tête de la classe, et vous encore Par exemple, j'ai eu ce problème car ma classe était dérivée de NSMutableData (que je ne connaissais pas alors), et moi ded une méthode,

- (void) initWithLength:(float)length; 

à ma classe. NSMutableData définit déjà cette méthode et utilise un entier.

Ma méthode a ensuite produit des déchets: la valeur du flotteur a été passée en 0x0, peu importe ce que je l'ai envoyé ...

Questions connexes