Comment initialiser une sous-classe NSObject sur un iPhone?
-
03-07-2019 - |
Question
Je souhaite écrire des méthodes dans une classe afin que d'autres classes puissent appeler ces méthodes à l'aide de [instance methodName: Parameter]
.
Si la classe est une sous-classe de UIViewController
, je peux utiliser initWithNibName
pour l'initialiser. Mais je veux écrire les méthodes dans une sous-classe NSObject , comment puis-je l'initialiser?
La solution 2
Je trouve que cela peut fonctionner:
TheClass *newObject = [[TheClass alloc] init];
//do something here
[newObject release];
Autres conseils
iphony est correct, mais il ne dit pas que vous devez écrire vous-même la méthode init. Votre méthode init devrait généralement ressembler à ceci:
- (id) init
{
if (self = [super init])
{
myMember1 = 0; // do your own initialisation here
myMember2 = 0;
}
return self;
}
Bien que le documentation Apple indique
La méthode init définie dans la classe NSObject ne fait aucune initialisation; il retourne tout simplement à soi-même.
et on peut simplement être tenté d'écrire
- (id) init
{
myMember1 = 0; // do your own initialisation here
myMember2 = 0;
return self;
}
ceci est FAUX et ne suit pas ce qui est explicitement indiqué dans la documentation:
Dans une implémentation personnalisée de cette méthode (init), vous devez appeler la commande super initialiseur désigné puis initialisez et retournez le nouvel objet.
DOIT. Pas devrait, pourrait, devrait, etc.
Vous ne devez pas présumer que l'init de NSObject ne changera pas à l'avenir; ni la super-classe dont dérive votre classe personnalisée.