2010-04-29 9 views
2

Je suis nouveau dans iphone.J'utilise un indicateur de variable pour jouer des chansons dans le lecteur avAudio toutes les chansons sont correctement manipulées avec flag variable.we ont deux onglets dans la barre d'onglets, je veux que si une chanson joue alors sur d'autres si nous utilisons cette variable de drapeau alors je synchronise l'information de chanson avec la chanson. Mais je ne peux pas accéder à la valeur de l'indicateur sur l'étiquette d'information de chanson. J'importe le dossier global dans le dossier d'info de chanson.Problème de variable globale

S'il vous plaît Aidez-moi celui par lequel je définis un entier global auquel var i peut accéder dans tous les projets.

Répondre

2

Placez la variable dans le fichier .m de votre application. Déclarer comme

extern MyType* MyVar = MyVal; 

ensuite dans votre délégué app .h fichier

extern MyType* MyVar = MyVal; 

comprennent alors que .h fichier où vous avez besoin de la variable.

Vous pouvez également utiliser un fichier séparé pour placer dans GLOBALS

Vous pouvez également placer le extern dans votre fichier * _prefix.h -. Mais je ne aime personnellement faire.

+1

Les variables globales non enveloppées sont mauvaises. Bien que cela fonctionne techniquement, cela rendra l'application fragile. – TechZen

+0

Je pensais aussi que maintenant, j'ai tendance à être plus pragmatique. Ils sont la bonne solution à une certaine échelle. Toutes les applications ne sont pas infinies. – sylvanaar

3

Les variables globales sont mauvaises. Au fur et à mesure que la complexité de l'application augmente, les problèmes sont quasiment impossibles à localiser.

Il y a plusieurs façons de gérer cela.

  1. Créez une propriété BOOl dans le délégué de votre application et référencez la propriété en référençant le délégué de l'application. C'est la manière la plus courante d'implémenter ce type de fonctionnalité.
  2. Créez un objet singleton personnalisé pour contenir les variables. Accédez à la variable en appelant le singleton. Vous n'utilisez généralement que celui-ci pour les grandes données complexes.
  3. Enregistrer la valeur par défaut de l'utilisateur en appelant +[NSUserDefaults standardUserDefaults]

Dans votre cas, je pense que (3) serait le mieux parce que vous êtes vraiment essayer de sauver l'état d'application au lieu des données utilisateur. Les informations sur l'état de l'application appartiennent aux valeurs par défaut de l'utilisateur. Ceci est particulièrement utile lorsque vous souhaitez redémarrer l'application à son état précédent, par ex. ouvre les vues et les données qui étaient ouvertes lors de la dernière fermeture.