J'ai besoin d'un moyen de créer des variables accessibles pendant toute la durée de démarrage de ma classe personnalisée lorsque j'appelle la fonction de libération. J'ai besoin de conserver un NSDate et un NSString.Comment puis-je m'assurer que rien n'est auto-libéré?
Répondre
Envoie la variable un message retain
.
Do [myObject retain]
ou @property(nonatomic, retain) MyClass *myObject;
Autorelease juste feux un message -release à un moment ultérieur. Si vous voulez que vos variables restent, restez-les quand elles sont assignées. Même si elles sont auto-libérées, votre retenue augmentera le retainCount, ainsi elles ne seront pas libérées. Assurez-vous de les libérer dans VOTRE dealloc.
J'ai une chaîne et une date, dois-je avoir une méthode init dans ma propre classe pour leur envoyer une retenue? – Chris
Vous pouvez les conserver là où vous les avez initialisés, assignés ou utilisés pour la première fois. Avant cela, vos objets d'instance sont tous des pointeurs nuls. – hotpaw2
Donnez votre propriétés conserver la classe personnalisée pour chaque variable dans son fichier d'en-tête:
@property (nonatomic, retain) NSDate *myDate;
@property (nonatomic, retain) NSString *myString;
Assurez-vous de créer appropriés setters et getters, ou utiliser @synthesize
, dans son dossier de mise en œuvre:
@synthesize myDate, myString;
Ensuite, retiens-les! – BoltClock