Un livre sur la programmation de l'iPhone instancie les classes comme ceci :
[[Class alloc] init]
Un autre livre sur l'Objective-C le présente ainsi :
[Class new]
Quelle est la différence ?
Un livre sur la programmation de l'iPhone instancie les classes comme ceci :
[[Class alloc] init]
Un autre livre sur l'Objective-C le présente ainsi :
[Class new]
Quelle est la différence ?
À l'origine, en Objective-C, les objets étaient créés avec new. Au fur et à mesure de l'évolution du framework OpenStep/Cocoa, les concepteurs ont estimé que l'allocation de la mémoire pour un objet et l'initialisation de ses attributs étaient des préoccupations distinctes et devaient donc être des méthodes séparées (par exemple, un objet peut être alloué dans une zone de mémoire spécifique). C'est ainsi que le style alloc-init de création d'objet est devenu populaire.
Fondamentalement, les nouvelles méthodes sont anciennes et presque, mais pas tout à fait, dépréciées - ainsi, vous verrez que les classes Cocoa ont beaucoup de méthodes init mais presque jamais de nouvelles méthodes personnalisées.
Comme déjà mentionné, par défaut, il n'y a pas de différence. Mais vous pouvez écraser le new
méthode de classe. La documentation d'Apple a quelques réflexions à ce sujet.
Contrairement à alloc , nouveau est parfois réimplémenté dans des sous-classes pour invoquer une initialisation spécifique à la classe d'initialisation spécifique à la classe[...] Souvent nouveau... Les méthodes seront font plus que l'allocation et l'initialisation initialisation.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.