2010-12-01 6 views
0

je suis en train de faire une fonction qui utilise opérateur% dans l'objectif c ma fonction est:utilisation opérateur% dans Xcode

-(void) image1:(UIImageView *)img1 
     image10:(UIImageView *)img10 
     image100:(UIImageView *)img100 
     score:(NSInteger *)sc 
{ 
     NSInteger* s100,s10,s1; 

    s100 = sc % 100; 
    s10 = (sc - s100 * 100) % 10; 
    s1 = (sc - sc % 10); 
    NSLog(@"%d",s1); 
} 

mais je m'y suis des erreurs .. pouvez-vous me guider vers une solution

+0

Alors, quelle est votre question? Qu'est-ce que votre fonction est censée faire? – Vladimir

+0

Alors, quelle est votre question ..? – Jasarien

+0

Quelles sont les erreurs? Quelle solution? – JeremyP

Répondre

1

Vous ne pouvez pas implicitement créer des objets de ce type. Vous voulez que s100, s10, s1 et sc soient toutes des variables de style C, mais vous avez déclaré s100 et sc comme des pointeurs, comme s'ils allaient contenir des objets Objective-C. Je vous suggère de changer NSInteger* à NSInteger dans les deux cas. Toutes les choses commençant en NS ne sont pas des objets.

+1

s10 et s1 ne sont pas des pointeurs. – JeremyP

+0

Vous avez complètement raison; J'ai mal lu la source. J'ai aussi manqué que sc est un pointeur. Je vais corriger ma réponse. – Tommy

5

NSInteger est un type primitif. Selon l'environnement, il est soit typedef'd à un entier signé 32 bits ou 64 bits.

la déclaration S100 est

NSInteger* s100 

donc S100 est un pointeur. Prendre le module d'un pointeur est faux. Cette ligne devrait être:

NSInteger s100,s10,s1; 

Et sc devrait probablement être un NSInteger aussi. Si vous ne voulez vraiment passer un pointeur vers un NSInteger, vous devez déréférencer quand vous faites l'arithmétique avec elle:

s100 = *sc % 100; 
s10 = (*sc - s100 * 100) % 10; 
s1 = (*sc - *sc % 10); 
+0

Très bon travail JeremyP ... merci beaucoup –

+0

@Mouhamad Lamaa: Pas de problème – JeremyP