init d'un NSNumberFormatter non exécuté

[font=arial,helvetica,sans-serif]Bonjour,[/font]



[font=arial,helvetica,sans-serif]C'est un problème récurrent pour moi.[/font]



[font=arial,helvetica,sans-serif]Mon projet comprend un certain nombre de sous-classes de NSNumberFormatter pour lesquels je souhaite intervenir à  l'initialisation.[/font]



[font=arial,helvetica,sans-serif]Ces objets sont définis dans mon fichier xib.[/font]



[font=arial,helvetica,sans-serif]J'ai implémenté la fonction init dans leur fichier m [/font]


<br />
- (id)init {<br />
    self = [super init];<br />
    if (self) {<br />
	    // Initialize self.<br />
    }<br />
    return self;<br />
}<br />




[font=arial,helvetica,sans-serif]mais le programme n'y passe pas. Je suppose qu'il s'agit d'une init faite lors du chargement de la xib.[/font]



[font=arial,helvetica,sans-serif]Je m'en tire en exécutant mes initialisations dans le windowControllerDidLoadNib de mon document mais j'aurai préféré intégrer le code dans l'objet lui-même.[/font]



[font=arial,helvetica,sans-serif]Une suggestion ?[/font]



[font=arial,helvetica,sans-serif]Merci d'avance[/font]

Réponses

  • Je peux me tromper, mais un fichier XIB, n'est qu'une sorte de patron pour les contrôles (positions, etc).



    Tu dois associer les objets avec des variables (IBAction, IBOutlet) et ce sont ces variables lors de leur initialisation qui utiliseront (ou pas) les fonctions init.
  • Bien sûr je n'ai pas précisé que mes NSNumberFormatter sont des IBOutlet dans mon fichier xib. J'ajoute qu'ils fonctionnent très bien (et sont donc créés) dans l'application.
  • Je pense que je dois utiliser [font=Courier, Consolas, monospace]awakeFromNib [/font]pour mes init.
  • Je n'en suis qu'à  ma 2ème appli, donc je suis encore novice aussi mais personnellement ça ne me choque pas.



    Soit tu crées l'objet via le code. Dans ce cas, tu maitrises l'ensemble du processus et la fonction init sera appelée.



    Soit tu délègues une partie du job en utilisant les XIB et à  ce moment la fenêtre se crée avec tous les objets initialisés et tu agis juste après cette création.
  • Attentions aux différentes méthodes d'init. Entre autre il y a le initWithCoder utilisé dans le cas des objets sérialisé dans un XIB.
  • AliGatorAliGator Membre, Modérateur
    Pas mieux que Yoann. Quand un objet est initialisé depuis un XIB, c'est un initWithCoder qu'il reçoit, pas un initWithFrame (pour une UIView) ou un init tout court (pour les autres objets)
  • Ne pas oublier aussi la méthode
    <br />
    - (void)windowDidLoad{<br />
       // j&#39;initie là  ce que je veux<br />
    }<br />
    


    Cela devrait aider...
  • xylowebxyloweb Membre
    janvier 2013 modifié #9
    -
Connectez-vous ou Inscrivez-vous pour répondre.