J'utilise une variable/propriété de mon délégué d'application en tant que variable globale. (Je ne veux pas traiter une classe singleton.)Tentatives d'accès aux variables/propriétés de délégué d'application
J'essaye d'écrire une instruction #define dans ma classe Delegate d'application. Si je tape:
[UIApplication sharedApplication]
Dans ma classe de délégué d'application, l'indication de code ne reconnaît pas sharedApplication. Mais si je tape la même chose dans une classe viewController, "sharedApplication" apparaît.
Afin de définir un NSMutableDictionary dans mon applicationDelegate.h (? Ou .M), je vous écris:
#define MyDictionary [[[UIApplication sharedApplication] delegate] stateDictionary]
Alors si j'essaie de l'utiliser dans une autre classe:
[[MyDictionary objectForKey:@"California"] largestCity];
J'obtiens une erreur que MyDictionary doit être déclaré en premier. Je suis vraiment confus au sujet de beaucoup de concepts ici.
Cela fonctionne très bien. Je vous remercie. Est-il possible de le définir afin que je puisse accéder à la variable sans utiliser vos 2 déclarations? Dois-je les libérer? Si je les libérais, libérerait-il mon instance AppDelegates du dictionnaire et du délégué? – Bryan
Aussi, dans la première partie de ma question, quelle est la différence entre les deux appDelegates? – Bryan
Vous devez utiliser ces deux lignes, malheureusement. Je ne connais pas de variables globales réelles, mais encore une fois, je ne les utilise pas dans mon code. :) Libération: libérez-les dans la classe où vous les avez créés. Si vous les avez créés dans MyApplicationDelegate, par exemple, relâchez-les dans la méthode dealloc. Question de délégué de l'application: commencez une nouvelle question de stackoverflow. :) C'est un sujet qui lui est propre ... – Rudi