2011-11-07 6 views
2

Pourquoi la convention utilise-t-elle l'instruction alloc et init imbriquée pour créer une instance? Pourquoi ne pas simplement utiliser quelque chose comme ci-dessous? Le seul moment auquel je peux penser est si vous vouliez utiliser l'une des méthodes init personnalisées - y a-t-il une autre bonne raison?Pourquoi ne pas simplement utiliser [Date NSDate]?

NSDate *now = [NSDate date];

+0

duplication possible de [Différence entre \ [\ [NSDate date \] conserver \] et \ [\ [NSDate alloc \] init \]] (http://stackoverflow.com/questions/7102706/difference-entre- nsdate-date-retain-et-nsdate-alloc-init) –

Répondre

5

NSDate *now = [NSDate date]; retourne une date autoreleased, il est une méthode de classe "commodité"

NSDate *now = [[NSDate alloc] init]; retourne une date retenue.

Généralement [NSDate date]; est le meilleur choix.

+0

Parfait, merci. –

-1

Si vous êtes à la recherche de la persévérance, en particulier dans la comparaison des dates, vous en avez besoin pour durer un certain temps. En utilisant l'approche singleton [NSDate date] vous recevez un objet autoreleased qui n'est pas sûr à utiliser hors de portée.

+1

Ce n'est pas "l'approche singleton". En fait, cela n'a rien à voir avec les singletons. –

+0

'[NSDate date]' ne retourne pas un singleton, c'est une méthode de classe "connivence". – zaph

+0

@CocoaFu Je pense que vous vouliez dire * commodité *, pas * connivence *. – jlehr

Questions connexes