Estoy recogiendo ObjC y Cocoa, que es también mi primera incursión seria en la programación en general.InitWith Methods vs. Factory Methods
Tengo problemas con las diferencias entre los métodos initWith, que se llaman en las instancias, y los métodos de fábrica, que son llamados en las clases.
En primer lugar, ¿por qué se llaman métodos de "fábrica" y existe un término adecuado para lo que he denominado métodos "InitWith"?
En segundo lugar, ¿cuál es la diferencia funcional? ¿Son solo las implicaciones de administración de memoria (que los métodos de fábrica devuelven un objeto liberado automáticamente)?
Por ejemplo, ¿cuál es la diferencia real entre [NSString stringWithString: (NSString*)aString]
y [[NSString alloc] initWithString: (NSString*)aString]
?
Esto va para los dos, Rugluds y Audacitor: no es necesario que incluya '(NSString *)' al enviar el mensaje 'initWithString:'. Solo la declaración del método lo necesita (para especificar qué tipo espera el método). Cuando lo incluye como parte de un mensaje, está convirtiendo el valor 'aString' en' NSString * '.Si 'aString' es un' NSString * ', entonces esto no hace nada y es innecesario; si es otra cosa, el reparto todavía no hará nada útil: cerrará el compilador, pero se bloqueará en el tiempo de ejecución. –