Aller au contenu

Besoin explication de code NSAlert


zekiller28
 Share

Messages recommandés

Hello !

 

voici mon code du jour :

 

NSAlert *alert=[[NSAlert alloc] init]; 
   [alert setMessageText:@"alerte !"]; // message de l'alerte
   [alert addButtonWithTitle:@"autre bouton1"]; // création d'un bouton
 [alert addButtonWithTitle:@"autre bouton2"]; // création d'un 2e bouton    
   [alert runModal]; // affichage de l'alerte

 

Au début j'avais simplement fait celà :

NSAlert *alert;

Mais ça ne fonctionnait pas… Après quelques recherches, j'ai donc essayer avec ça :

NSAlert *alert=[[NSAlert alloc] init]; 

qui fonctionne mais j'avoue ne pas bien comprendre pourquoi…

 

Jipéééééééé ? :zz-big-lecteur:

Lien vers le commentaire
Partager sur d’autres sites

Alors oui pour utiliser des méthode d'instance (celles qui commencent par "-"), il faut créer une instance de classe. Et pour créer une instance de classe, il faut l'allouer une instance et l'initialiser. De toute façon, si tu ne met rien dans "alert" alors tu utilise une variable non initialisé (qui contiens des données potentiellement aléatoire). Ça ne peut que faire crasher ton application.

 

Je sais plus, mais il me semble que dans RB aussi tu es obligé de faire un "new" pour obtenir une instance de classe, non ?

 

Le release est pas nécessaire si tu as ARC activé (ce que je te conseille de faire - pour savoir s'il est activé, le plus rapide c'est d'essayer de faire le release est de voir si tu as une erreur : si tu en as pas, alors ARC n'est pas activé).

Lien vers le commentaire
Partager sur d’autres sites

Soit tu convertis ton project en ARC (conseillé) - il va t'afficher un assistant pour te dire tout ce qu'il va faire afin que tu vérifie. Ça consiste essentiellement en des suppression de "release" et "autorelease" :

convert_arc.png

 

Soit tu active ARC directement :

Screen Shot 2013-10-22 at 16.00.08.png

Lien vers le commentaire
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement
 Share

×
×
  • Créer...