Objective-C: comment déclarer un membre statique qui est visible dans les sous-classes?
Je suis la déclaration d'une famille de classes statiques qui traite d'un protocole de communication. Je veux déclarer une classe parente, que le processus de messages communs, comme les accusés de réception, inline erreurs...
J'ai besoin d'avoir une statique var qui mantain l'actuel de l'élément en cours de traitement et je tiens à le déclarer dans la classe parent.
Je fais comme ça:
parent.m
@implementation ServerParser
static NSString * currentElement;
mais les sous-classes ne sont pas vu la currentElement.
- Pourquoi êtes-vous à l'aide de variables statiques et les méthodes de la classe? Si, dans l'avenir, vous souhaitez utiliser vos classes en même temps? Que faire si vous vous avez besoin pour gérer plus de 1 connexion ou autre besoin de plusieurs instances? Pour être franc, cela ressemble à une fracture de la conception.
- C'est une affirmation ridicule. Il existe de nombreuses utilisations pour les variables statiques.
Vous devez vous connecter pour publier un commentaire.
Si vous déclarez une variable statique dans le fichier d'implémentation d'une classe, alors que la variable n'est visible que pour que classe.
Vous pouvez déclarer une variable statique dans le fichier d'en-tête de la classe, cependant, il sera visible par toutes les classes qui
#import
l'en-tête.Une solution de contournement serait de déclarer la variable static dans la classe parente, comme vous l'avez décrit, mais aussi de créer une méthode de classe pour accéder à la variable:
Ensuite, vous pouvez récupérer la valeur de la variable statique en appelant le:
Pourtant, la variable ne sera pas visible pour les autres classes sauf s'ils utilisent cette méthode.
Une solution de contournement serait de déclarer la variable statique dans la mise en œuvre de la classe parent ET également déclarer une propriété de la classe parent.
Puis, dans les méthodes d'accès à l'accès à la variable statique. De cette façon, vous pouvez accéder à des variables statiques comme des propriétés avec la syntaxe à point. Toutes les sous-classes ont accès à la même partagé variable statique.
Plus simple. Créer un pré de la classe de Base, avec protection statique de la variable. Par exemple:
}
public abstract class de Base : preBase{
}
public class DerivedOne : Base {
}