NsTableView et les dates.

NseaProtectorNseaProtector Membre
01:10 modifié dans API AppKit #1
Bonjour, j'essaye tout simplement de modifier l'exemple raiseman d'Hillegass en remplaçant par exemple le ratio par une date et je n'y arrive pas...
J'ai eventDate qui est une NSDate
NSDate *eventDate;<br />@property(readwrite, retain)NSDate *eventDate;

J'ai remplacer le NSNumberFormatter par un NSDateFormatteur dans la tableVue.
- (id)init <br />{<br />	<br />	eventName= @&quot;Unnamed&quot;;<br />	eventDate = [NSDate date];<br /> 	[super init];<br /><br />	<br />&nbsp; &nbsp; return self;<br />}

Je pense que c'est le [NSDate date] qui ne va pas, mais je patauge...

Réponses

  • AliGatorAliGator Membre, Modérateur
    juin 2009 modifié #2
    Normal, [NSDate date] est un constructeur de commodité, par définition comme tous les constructeurs de commodité il retourne un objet autoreleased (c'est un équivalent de [tt][[[NSDate alloc] init] autorelease][/tt] sur le même principe que les autres constructeurs de commodité).
    Il faut donc soit lui rajouter un "retain", soit faire [tt][[NSDate alloc] init][/tt] à  la place de [tt][NSDate date][/tt]. Et dans tous les cas faire bien sûr le "release" dans le "dealloc" (et ne pas oublier [super dealloc] après, enfin comme d'hab quoi).

    Sinon ta méthode init n'est pas bonne, elle ne correspond pas à  un init standard : il faut appeller [super init] avant, et tester qu'il n'est pas nil avant de faire tes nouvelles initialisations. Y'a des templates tout faits dans les TextMacros Apple (menu Edit -> Insert Text Macros, ou commencer à  taper "init" puis la touche 'esc'), et il va t'insérer automatiquement le modèle d'une méthode init. Sinon c'est expliqué dans la doc je sais plus où (sans doute dans la doc de NSObject) comment faire les méthodes init et pourquoi comme ça et pas autrement.
  • NseaProtectorNseaProtector Membre
    01:10 modifié #3
    MERCI Ali, effectivement ça change tout !
Connectez-vous ou Inscrivez-vous pour répondre.