¿Cómo inicializar una subclase de NSObject en iPhone?
-
03-07-2019 - |
Pregunta
Quiero escribir algunos métodos en una clase para que otras clases puedan llamar a estos métodos usando [instancia methodName: Parámetro]
.
Si la clase es una subclase de UIViewController
, puedo usar initWithNibName
para inicializarla. Pero quiero escribir los métodos en una subclase de NSObject , ¿cómo puedo inicializarlo?
Solución 2
Creo que esto puede funcionar:
TheClass *newObject = [[TheClass alloc] init];
//do something here
[newObject release];
Otros consejos
iphony es correcto, pero él o ella no dice que necesita escribir el método init usted mismo. Su método init generalmente debería verse así:
- (id) init
{
if (self = [super init])
{
myMember1 = 0; // do your own initialisation here
myMember2 = 0;
}
return self;
}
Aunque documentación de apple dice
El método init definido en la clase NSObject no inicializa; simplemente regresa a sí mismo.
y uno puede ser tentado a escribir
- (id) init
{
myMember1 = 0; // do your own initialisation here
myMember2 = 0;
return self;
}
esto es INCORRECTO y no sigue lo que se establece explícitamente en la documentación:
En una implementación personalizada de este método (init), debe invocar super inicializador designado, luego inicializar y devolver el nuevo objeto.
DEBE. No debería, podría, debería, etc.
No debe asumir que el init de NSObject no cambia en el futuro; ni la superclase de la que deriva su clase personalizada.