Question

Je viens de commencer l'objectif d'apprentissage c ayant un peu d'expérience Java et ce site a été très utile pour répondre à des charges de mes questions, mais je l'ai frappé une question que je ne peux pas tout à fait comprendre. Theres un montant de juste à lire sur le sujet, mais je ne peux pas trouver tout à fait où j'ai mal parti.

Je lis ceci:

  

Objectif C ne supporte pas les éléments de données de classe (à savoir des données partagées par tous les objets de la même classe), cependant, ils peuvent être émulés par l'utilisation du modificateur statique. Par exemple, la déclaration d'une variable de comptage int statique dans le fichier de mise en œuvre de la classe des employés entraînerait tous les objets employés partageant une seule variable entier appelé nombre.

Mais il me semble avoir fini avec cette fonctionnalité sans essayer ... et je ne veux pas!

Le scénario est que j'ai une catégorie de UIImageView où je declareing une variable globale (juste au-dessous de ma ligne @implementation) pour compter un événement particulier et l'avoir utilisé dans mes nouvelles méthodes.

@implementation UIImageView (Draggable)    
int touchesCount = 0;    
// methods ...

Tout fonctionne bien si j'ai un seul UIImageView. Cependant, quand je crée et ajoute une deuxième instance de UIImageView cette variable de comptage est partagé entre les deux donnant un comportement inattendu.

Figure il peut être pertinent de montrer comment je crée les objets:

UIImageView *myImageView = [[UIImageView alloc] initWithFrame:myImageRect]; 
UIImageView *myImageView2 = [[UIImageView alloc] initWithFrame:myImageRect];
// ... (create, manipulate and set 2 images to the 2 views)
[self.view addSubview:myImageView];
[self.view addSubview:myImageView2];

Autre que cela, des suggestions sur l'endroit où je pourrais aller mal?

Merci!

Modifier. Pour illustrer un peu plus ce que je fais avec les 2 vues, auto dans ce cas est un ViewController

Était-ce utile?

La solution

Ce que vous cherchez sont variables d'instance, mais les catégories ne peuvent pas les ajouter à une interface Apple :

  

Notez que la catégorie ne peut pas déclarer des variables d'instance supplémentaires pour la classe; il comprend uniquement les méthodes.

Vous devez utiliser héritage au lieu:

@interface MyView : UIImageView {
    int touchesCount;
}
// ...
@end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top