2010-10-06 6 views
1

J'ai un bouton dans mon application appelée myButton, ce que je quoi faire est vraiment simple. Je veux avoir un entier qui en ajoute un à chaque fois que le bouton est poussé. Voici ce que le code ressemble en ce moment:Entiers dans IPhone App

- (IBAction)myButton { 
NSLog(@"Button was pushed WOHHOP"); 
} 

Ceci est dans mon fichier .m, alors dois-je déclarer un entier dans mon .h? Je veux juste enregistrer la valeur à l'intérieur de cette action de bouton afin que je puisse voir le nombre augmenter d'un coup chaque fois que je le pousse. Un conseil aiderait, Merci!

Répondre

5

i utiliseraient une variable d'instance par défaut:

@interface MONClass : MONSuperClass 
{ 
    NSUInteger clicks; 
} 

@end 

@implementation MONClass 

- (id)init { 
    self = [super init]; 
    if (0 != self) { 
     clicks = 0; 
    } 
    [return self]; 
} 

- (IBAction)myButton:(id)sender 
{ 
#pragma unused(sender) 
    ++clicks; 
    NSLog(@"Button was pushed %i times WOHHOP", clicks); 
} 
+0

A quoi sert le # pragma? – Emil

+0

'- Méthode (IBAction): (id) sender' est la signature de méthode qu'un' IBAction' devrait prendre. dans ce cas, 'expéditeur' est inutilisé. '#pragma unused (sender)' arrête l'avertissement émis par le compilateur (selon les avertissements que vous avez activés). – justin

1

Vous pouvez également déclarer une variable statique:

- (IBAction)myButton { 
    static NSUInteger counter = 0; 
    counter++; 
    NSLog(@"Button was pushed WOHHOP. Counter: %u", counter); 
} 

Mais notez que dans ce cas, la variable counter sera partagée entre toutes les instances de cette classe. Ce n'est peut-être pas un problème dans ce cas mais cela peut prêter à confusion. Une variable d'instance réelle est généralement la meilleure solution.

+0

Merci, c'est exactement ce dont j'avais besoin, juste par curiosité dois-je "libérer" cette variable une fois l'application terminée? –

+0

Non. Veuillez noter le texte que je viens d'ajouter à ma réponse. –

1

La troisième option consiste à simplement utiliser une variable globale. Déclarer:

int counter = 0; 

entre les importations et l'implémentation dans n'importe quel fichier .m (mais un seul); déclarer:

extern int counter; 

dans l'en-tête de tout fichier dans lequel vous souhaitez utiliser ce compteur. Et utiliser:

counter++; 

de partout (toute fonction, méthode, objet ou classe), et accéder au compteur toute l'application.

Notez que l'utilisation de variables globales ne s'adapte pas bien aux grandes applications ou aux composants réutilisables, donc leur utilisation est généralement déconseillée. Utilisez à la place des variables d'instance, ou peut-être des locals statiques de classe ou de méthode, si cela est possible.