¿Cuál es la diferencia entre[Class new] y[[Class alloc] init] en iOS?
objective-c new-operator (3)
Aquí: alloc, init y nuevo en Objective-C
Básicamente es una cuestión de moderno versus tradicional. La ventaja más directa de init sobre new es que hay muchos métodos de inicio personalizados.
Posible duplicado:
alloc, init y nuevo en Objective-C
Estoy un poco confundido acerca de [Class new] y [[Class alloc] init] . [[Class alloc] init] un content objeto usando [Class new] y [[Class alloc] init] .
(1). NSMutableArray *content = [NSMutableArray new];
(2). NSMutableArray *content = [[NSMutableArray alloc] init];
Mi pregunta es sobre las diferencias entre [Class new] y [[Class alloc] init] . Para mí, (1) y (2) son similares. Si (1) y (2) son similares, ¿por qué usamos [[Class alloc] init] mayor parte del tiempo, en comparación con [Class new] ? Creo que debe haber alguna diferencia.
Amablemente explicar las diferencias, pros y contras de ambos?
El +new método es simplemente una abreviatura de +alloc y -init . La semántica de propiedad es idéntica. El único beneficio de usar +new es que es más conciso. Si necesita proporcionar argumentos al inicializador de la clase, deberá usar los +alloc y -initWith... lugar.
Alloc: método de clase de NSObject. Devuelve una nueva instancia de la clase de recepción.
Init : método de instancia de NSObject. Implementado por subclases para inicializar un nuevo objeto (el receptor) inmediatamente después de la memoria para que se haya asignado.
Nuevo : método de clase de NSObject. Asigna una nueva instancia de la clase de recepción, le envía un mensaje de inicio y devuelve el objeto inicializado.
Versión : Método de instancia del delegado NSObject. Disminuye el conteo de referencia del receptor.
Autorelease : método de instancia del delegado NSObject. Agrega el receptor al grupo de autorrelease actual.
Retener: método de instancia del delegado NSObject. Incrementa el recuento de referencias del receptor.
Copiar: método de instancia del delegado NSObject. Devuelve una nueva instancia que es una copia del receptor.
Entonces para concluir podemos decir que
alloc va con init
nuevo = alloc + init