Objective-C de la fonction d'appel sur une autre classe?
Voici mes objective-c classes:
AppDelegate
SomeScript
Comment pourrais-je appeler la fonction loggedIn sur le SomeScript classe à partir de l'application-délégué ou de toute autre classe?
Grâce,
Christian Stewart
OriginalL'auteur Christian Stewart | 2010-08-26
Vous devez vous connecter pour publier un commentaire.
(Je vais supposer
loggedIn
est une méthode d'instance prenant pas de paramètres). Tout d'abord, plusieurs questions de terminologie:Donc, notre nouveau plan est d'abord de instancier SomeScript, puis envoyer un message à l'instance.
C'est bon. Toutefois! Je parie que vous voulez que votre script à coller pour une utilisation ultérieure. Ainsi, nous devrions vraiment faire une variable d'instance de votre application délégué. Donc, au lieu de cela, dans AppDelegate.h, ajoutez ceci à l'intérieur des accolades:
Maintenant notre variable coller autour, et notre première ligne de avant devient simplement:
Dernière difficulté: nous ne voulons pas créer un nouveau script à chaque fois que nous appelons
loggedIn
(je suppose)! Donc, vous devez placer l'instanciation quelque part, il ne sera exécuté qu'une seule fois (par exemple,application:DidFinishLaunchingWithOptions:
). Ta-da!C'est dans son AppDelegate. @ChristianStewart: Jeremy droit, vous devez l'habitude de l'envoyer
release
àmyScript
lorsque vous avez terminé avec elle. Je n'ai pas vous dire car je suppose que vous utiliserez tout le temps de votre application est ouverte.Il ne fait pas de mal à obtenir de bonnes habitudes. Techniquement, vous n'avez pas besoin de libérer de tout ce que votre délégué d'application tient parce que le délégué d'application des séjours autour jusqu'à la fin. Cependant, c'est une bonne idée de prendre l'habitude de mettre la sortie en dealloc. Il doit devenir automatique.
Oui, j'ai fini par faire cela de toute façon Jeremy 😀
Pas plus avec automatique de comptage de référence!
OriginalL'auteur andyvn22
Vous aurez un initialisé référence d'un SomeScript objet dans votre AppDelegate classe (en supposant que vous n'avez pas besoin SomeScript être un Singleton classe comme votre AppDelegate). Quelque chose comme:
SomeScript * myScript;
comme ivar dans votre AppDelegate de l'interface, tandis que dans ses
application:DidFinishLaunchingWithOptions:
vous avez inited (supposons que la valeur par défaut alloc/init combo appelant):
myScript = [[SomeScript alloc] init]
Fait tout cela, quand vous en avez besoin pour appeler une méthode de myScript vous pouvez tout simplement faire:
[myScript myMethod:myParameter]
Ici vous pouvez trouver un bon guide pour les débutants à partir de Apple
OriginalL'auteur rano
Si vous ne voulez pas utiliser des instances de SomeScript ... vous pouvez suivre une approche différente. Utilisation NSNotificationCenter pour l'envoi d'une notification à votre SomeScript objet et le faire fonctionner à un sélecteur d'après.
Dans votre -(void)awakeFromNib{} méthode, de SomeScript placez le code suivant :
Créer la méthode "mySelector:" et placez le à l'appel de votre loggedIn méthode. (Ou si vous préférez, vous pouvez remplacer "mySelector:" avec loggedIn directement)
Alors n'oubliez pas de retirer de l'observateur sur dealloc, alors placez le morceau de code suivant dans votre SomeScript classe aussi :
Ensuite, vous pouvez envoyer une notification de toute autre manière :
Ce dernier morceau de code envoie une notification à SomeScript et le sélecteur est exécuté.
Espère que cela vous aide à vous les gars!
OriginalL'auteur Artur
On peut appeler ça comme
[self loggedIn]
Lorsque loggedIn méthode est en SomeScript classe, à l'aide de simples syntaxes dans le dernier xcode.
avec l'ARC, pas de libération de la mémoire nécessaire.
OriginalL'auteur Sameera R.