¿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