dans une méthode de la méthode de classe I Déclarez les éléments suivants:
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Hello" message:@"World" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Done", nil];
3 Réponses :
Premièrement, je suppose par des méthodes "statiques", vous voulez dire des méthodes de classe (déclaré avec "Le compilateur ne se plaint pas" à propos de l'objectif-c ne vous dis pas toujours beaucoup. Tout cela signifie vraiment que vous avez convaincu le compilateur que tout devrait (ou au moins pourrait em>) fonctionner au moment de l'exécution. P>
À la fin, si l'objet que vous fournissez en tant que délégué répond aux bons messages, le compilateur ne s'en souciera pas à ce que c'est une classe (et le temps d'exécution). Dans ce cas, vous fournissez Je pense qu'il est probablement discutable si c'est ce que vous devriez em> faire - mais c'est probablement en dehors des limites de votre question. P> + code> au lieu de
- code>). p>
auto code> à partir d'une méthode de classe. C'est comme si vous avez tapé
[classe myClass] code>. P>
Je voudrais partager certaines de mes conclusions:
Peu importe si je déclare si je déclare le délégué comme celui-ci Cependant, il importe comment je déclare la méthode: p>
délégué: auto code> ou
délégué: [Classe MyClass] Code> P> P> P>
// Mind the `-` sign at the start of the line.
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
// Some Actions here
}
Oui, auto code> et
[Classe MyClass] code> sont équivalents dans une méthode "myClass". Si vous voulez que votre classe elle-même soit le délégué, vous devez alors déclarer cela comme une méthode de classe. La documentation décrit comment mettre en œuvre la méthode d'instance, à laquelle je pense est à peu près universellement "comment ça se fait". À la fin, ce qui compte vraiment, c'est que quel que soit l'objet que vous fournissez, le délégué répond à «AlertView: clickedbuttonatidex:« Sélecteur ». Donc, oui, la réponse est toujours que vous peut i> le faire. Si vous devriez être différent.
Wow! Pas dans un million d'années aurait-je estimé que la méthode de la déléguée en une méthode de classe serait la voie à suivre. Merci merci! J'ai perdu plus de 5 heures en essayant de résoudre un problème similaire. ... n'avait pas besoin de nscondition ou de spectselector ou quoi que ce soit!
J'utilise une méthode de classe comme mon mfmailcendévievievieviewontrollerdélégate Code>, et je reçois cet avertissement:
Pointeur incompatible Types d'affectation à "ID
@Jeff. Ma réponse a 8 ans alors je suis un peu hors de pratique. Je vous suggère d'ouvrir une nouvelle question et peut-être de référence à cet article. Je suis désolé de ne pas pouvoir vous offrir une meilleure réponse.
@Besi. Merci. J'ai trouvé une solution de contournement raisonnable (il se débarrasse de l'avertissement). J'ajoute (id) code> Ainsi,
contrôleur.mailcomposedelegate = (ID) [Classe auto]; code>
Oui, vous pouvez !!! Une classe est également un objet. P>
Vous pouvez essayer le nom de la classe au lieu de soi, qui fait référence à l'instance.
Voir également la réponse à Stackoverflow.com/questions/1781046/... . C'est pertinent je pense.
Dans une méthode de classe Soi se réfère à la classe et non à un objet de la classe. Ce code est-il exécuté?
J'ai édité
méthode statique code> et le modifié en
Méthode de classe code> Merci pour la remarque. Je suppose que c'est mon fond de java me hantant :-)