2

Once

  1. Object
    1. Once

Une classe Once ne crée qu'une seule instance.

  1. #include "So-o.h"
  2.  
  3. class Once;

Charge les déclarations des types de données et des fonctions de So-o. Définit la classe Once.

  1. void defclassOnce() {
  2.     property _c_properties[] = {
  3.         "instance",
  4.         0
  5.     };
  6.     selector _c_messages[] = {
  7.         "new",  METHOD(c_new),
  8.         0, 0
  9.     };
  10.  
  11.     Once = defclass("Once", 0, 1, _c_properties, 0, _c_messages, 0);
  12. }

Définit defclassOnce, le constructeur de la classe Once.

La classe Once hérite de la classe Object. La propriété de classe instance garde l'unique instance de la classe. La classe Once redéfinit le message de classe new.

MÉTHODES DE CLASSE

new
SYNOPSIS

instance new(self[, arg ...])

DESCRIPTION

La première fois que new est appelée, elle retourne une nouvelle instance de class. Les fois suivantes, elle retourne cette même instance de class.

new passe tous les paramètres arg du message à init.

CODE
  1. static instance c_new(class self, va_list va) {
  2.     instance i = sendmsg(self, "get", "instance").p;
  3.  
  4.     if (!i) {
  5.         i = superapply(Once, self, "new", va).p;
  6.         sendmsg(self, "set", "instance", i);
  7.     }
  8.  
  9.     return i;
  10. }

new récupère la propriété de classe instance. Si cette propriété n'a pas encore de valeur, new crée une nouvelle instance en appelant la méthode new héritée de la classe Object avec les arguments du message et sauvegarde la nouvelle instance dans la propriété de classe instance. new retourne l'instance qui a été sauvegardée ou la nouvelle instance.

VOIR AUSSI

Application

Commentaires

Votre commentaire :
[p] [b] [i] [u] [s] [quote] [pre] [br] [code] [url] [email] strip aide 2000

Entrez un maximum de 2000 caractères.
Améliorez la présentation de votre texte avec les balises de formatage suivantes :
[p]paragraphe[/p], [b]gras[/b], [i]italique[/i], [u]souligné[/u], [s]barré[/s], [quote]citation[/quote], [pre]tel quel[/pre], [br]à la ligne,
[url]http://www.izend.org[/url], [url=http://www.izend.org]site[/url], [email]izend@izend.org[/email], [email=izend@izend.org]izend[/email],
[code]commande[/code], [code=langage]code source en c, java, php, html, javascript, xml, css, sql, bash, dos, make, etc.[/code].