Sont les variables d'instance définie à zéro par défaut en Objective-C?

Je suis tri de certains problèmes de mémoire avec mon iPhone et je viens de penser à quelques notions de base. Si je configurer un ivar et ne jamais l'utiliser dans la durée de vie de mon objet, quand je l'appelle dealloc sur elle, cela cause un problème? E. g.

@interface testClass {
    id myobject;
}
@property (nonatomic, retain) id myobject;
@end

@implementation testClass
@synthesize myobject;
- (id)init {
    ...
    //Do I have to set myobject to nil here?
    //So if myobject isn't used the dealloc call to nil
    //will be okay? Or can you release the variable without
    //having set every object to nil that you may may not use 
    ...
}

...

//Somewhere in the code, myobject may be set to
//an instance of an object via self.myobject = [AnObject grabAnObject]
//but the object may be left alone

...

- (void)dealloc {
    [myobject release];
    [super dealloc];
}
@end
  • Mike Abdullah: j'ai fait ce changement dans mon montage.
  • Ah bon, donc normale de la variable créée dans une fonction ne sont pas définis à 0/zéro lorsque vous les déclarez ensuite? Juste les variables d'instance. Donc, est-il exact que les variables normales sera juste contiennent des "ordures" jusqu'à ce que vous l'avez explicitement définie à quelque chose?
  • Qui est correct.
  • objet Local variables sont automatiquement initialisés à zéro.
  • ... lorsque vous utilisez un ARC, qui vous doit.