Quelle est la signification des variables statiques dans une implémentation d'une interface?
Je n'arrive pas à comprendre les variables statiques lorsqu'il est défini dans la mise en œuvre d'une interface. Dans les méthodes que je ne comprends en quoi ils diffèrent des variables locales, mais pas lorsqu'il est défini directement dans la mise en œuvre.
Regardez ces exemples. Quelle est la différence de ces deux faire pratiquement?
#include "MyClass.h"
@implementation MyClass
int myInt;
...
@end
Et:
#include "MyClass.h"
@implementation MyClass
static int myInt;
...
@end
myInt
est dans les deux cas, visible de toutes les méthodes, et si j'ai interprété un test, j'ai couru correctement, myInt
va dans les deux cas, la même variable pour les différentes instances de la classe.
Vous devez vous connecter pour publier un commentaire.
La "statique" mot-clé dans ce contexte est le même que dans la plaine de C: il limite le champ d'application de myInt pour le fichier actuel.
static
s peut être#import
ed dans plusieurs fichiers, mais je me dois de mentionner qu'il s'agit probablement (toujours?) une mauvaise idée, et d'une mauvaise utilisation destatic
.Malheureusement, il a des effets différents selon l'endroit où vous l'utilisez.
Fonctions Statiques:
Par défaut, toutes les fonctions ont une portée mondiale. La statique spécificateur permet de limiter la fonction du champ d'application du fichier actuel.
Variables Locales Statiques:
Lorsque vous utilisez le modificateur static sur une variable locale de la fonction “se souvient” de sa valeur dans les invocations. Par exemple, le currentCount variable dans l'extrait de code suivant n'est jamais réinitialisé, donc au lieu de stocker le nombre dans une variable à l'intérieur de la fonction main(), nous pouvons laisser countByTwo() faire l'enregistrement pour nous.
Cette utilisation du mot-clé static n'a pas d'incidence sur la portée des variables locales.
Lire plus sur le mot-clé static.
"Dans les deux C et Objective-C, une variable statique est une variable qui est alloué pour l'ensemble de la durée de vie d'un programme. Ceci est en contraste à variables automatiques, dont la durée de vie existe lors d'un seul appel de fonction; et allouée dynamiquement des variables comme des objets, qui peut être libérée à partir de la mémoire lorsqu'il n'est plus utilisé. Plus simplement, une variable statique de la valeur est maintenue tout au long de tous les appels de méthodes/fonctions. Lorsqu'ils sont déclarés en dehors d'une fonction, une variable statique est visible par tout dans le fichier dans lequel elle est déclarée; quand déclarée à l'intérieur d'une fonction ou d'une méthode, il n'est visible qu'à l'intérieur de cette fonction ou de la méthode, mais la valeur est conservée entre les appels."
Découvrez l'explication complète ici:
https://stackoverflow.com/a/4965145/951349
D'Apple, "L'Objective-C, Langage de Programmation": "la déclaration d'une variable statique les limites de son champ d'application pour juste la classe, et à juste la partie de la classe qui est mis en œuvre dans le fichier. (Ainsi, à la différence des variables d'instance, les variables statiques ne peuvent pas être héritée par, ou manipulée directement par les sous-classes)."