2010-09-16 4 views
0

J'utilise l'objectif c et j'essaie de générer une valeur à partir d'une fonction. Apparemment, je fais quelque chose de mal parce que je reçois une valeur incorrecte.Objectif c - float renvoyant une valeur erronée

Ceci est mon code:

-(float) getAngleBetween { 
float num = 0.0; 
return num; 

}

et je vous appelle comme suit:

float *theAngleBetween = [self getAngleBetween]; 
NSLog(@"Angle.. = %f", theAngleBetween); 

Toute aide s'il vous plaît?

Répondre

1
float theAngleBetween = [self getAngleBetween]; 
// ^

Il ne devrait pas y avoir de .

Étant donné que vous renvoyez un float, le récepteur doit également avoir le type float. float* signifie un pointeur sur float, ce qui est entièrement différent de float.

BTW, assurez-vous de déclarer -(float)getAngleBetween;avant vous appelez [self getAngleBetween]. Mettez-le dans le @interface. Si elle n'est pas déclarée auparavant, la méthode sera supposée avoir le type -(id)getAngleBetween;. Sur x86 renvoyant un id et un float utilisent API différent (objc_msgSend vs objc_msgSend_fpret), ce qui peut être la cause du mauvais résultat.

+0

J'ai déclaré cela dans mon interface et il me dit toujours que j'ai des types incompatibles dans l'initialisation. – Lilz

+0

@Lily: Avez-vous '# importer 'le fichier d'interface? – kennytm

+0

oui parce que j'appelle une autre fonction que j'ai déclarée dans l'interface. – Lilz

0

Vous devriez avoir:

float theAngleBetween = [self getAngleBetween]; 

Débarrassez-vous des *, qui est pour les objets que, flotteur est un type de données primitive.

+0

sans *, il me dit des types incompatibles dans l'initialisation – Lilz

Questions connexes