2010-07-27 5 views
0

Je suis nouveau avec l'objectif c pour l'iphone.custom class = custom + alloc, custom + init

J'écris une classe personnalisée, alors, devrais-je écrire mes propres méthodes + alloc, + init? Je crois que: le + alloc appellera simplement [chose alloc]; et le + init effectuera quelque chose comme: [thing setValue: X];

Y a-t-il des méthodes "par défaut" + alloc et + init? si oui, que dois-je attendre la valeur par défaut + alloc et + ?, l'init Disons que j'ai un NSMutableDictionary * à savoir

@interface class1 : NSObject { 

    NSString *test; 
    NSMutableDictionary *map; 
} 

grâce

Répondre

5

Vous n'avez généralement pas besoin d'écrire votre propre méthode + alloc.

Pour votre exemple, vous pourriez avoir un -init qui ressemble à:

- (id)init { 
    self = [super init]; 
    if (self) { 
     map = [[NSMutableDictionary dictionary] retain]; 
    } 
    return self; 
} 

Notez que vous appelez d'abord le -init superclasse, et vérifier que cela a fonctionné, avant d'initialiser vos propres variables.

+0

super, merci pour la réponse – jhon

2

Vous devez JAMAIS override alloc.

Comme pour init, qui est une méthode d'instance , par ailleurs, oui qui serait l'endroit où vous auriez probablement souhaitez configurer vos variables.

+0

Je l'ai lu plusieurs fois maintenant. Cependant, je voudrais savoir, est-ce une propriété (haha voir ce que j'ai fait? * G *) de la langue, ou du cadre? En d'autres termes, @synthesize fonctionnerait-il encore si je ne dérive pas ma classe de NSObject, et ne dis pas au compilateur d'utiliser Foundation? –