Mot clé devant certaine Variable de classe

Bonjour à tous,

En parcourant les net je tombe sur certain fragment de code avec certain mot clé devant les variable, et malgré mes nombreuses recherches je n’ai toujours pas compris ce que cela signifie. Je fait donc appel à vous pour m’éclairer.
J’ai pu tomber sur les mot clé suivant:
fileprivate
NSmanaged
Dynamic (je remerciei Maxime pour son explication dans un sujet publié juste avant celui la)
etc… je sais qu’il en existe plein d’autre

Merci d’avance

fileprivate permet de créer des objets visibles seulement dans le fichier où ils sont définis.

Imagine que j’ai besoin d’une classe pour fabriquer des noms de personnes aléatoirement. Elle necessite une liste de noms et de prénoms pour fonctionner. Si je déclare ces listes en début de fichier, elles seront visibles par tous les objets de l’application. Pas très sécurisé comme système, ni discret.

Avec fileprivate, elles ne seront visibles que dans leurs propres fichiers, ce qui limite les risques.

Quelques chose comme (tapé à la main sans vérification ) :

// Classe Générateur Noms

fileprivate listeNoms = ["legendre", "leboisier", "dupont", "dulac", "snow"]
fileprivate listePrenoms = [ "éric", "carl", « robert", "john"]

class GenerateurNom {
  // ...
}

Pour le reste de l’application, seule la classe GenerateurNom() existe. listeNoms et listePrenoms sont privés, même si elles ont été déclarées en début de fichier, comme des variables globales.

Evidement, cela n’est pas utile si on programme comme un cochon avec un ENORME fichier contenant TOUT le code, une mauvaise habitude des anciens langages de programmation. :scream:

Dans une démarche saine, en déclarant chaque classe dans son propre fichier, c’est très pratique.

Un autre exemple, c’est la création de constantes uniquement lisible de manière locale.

1 « J'aime »

Merci pour l’explication , je voi mieu maintenant l’utilité

1 « J'aime »

Et le @NSManaged est un équivalent à @dynamic utilisé dans le contexte de Core Data si ma mémoire est bonne.

1 « J'aime »