2010-09-28 8 views
1

Afin d'essayer l'outil d'instrument de fuite de mémoire, je crée une application ipad basée sur la vue. C'est très simple. Je crée une application basée sur une vue par défaut. Dans le loadview de ViewController, dis-jeiphone/ipad fuites de mémoire instrument outil

// Implement loadView to create a view hierarchy programmatically, without using a nib. 
- (void)loadView { 

    [super loadView]; 

    UIView *view = [[UIView alloc] init]; 
    view.frame = CGRectMake(0, 0, 768, 1004); 
    view.backgroundColor = [UIColor redColor]; 
    [self.view addSubview:view]; 
    [view removeFromSuperview]; 
} 

Alors, je crée une vue à l'intérieur loadview, puis l'ajouter à la vue racine, puis retirez-le.

Mais la vue est créée dans une méthode et je ne la libère jamais.

Donc, je pense qu'après la fin de loadView, la vue créée a fuité non?

J'ai utilisé des instruments de fuite de mémoire pour vérifier, il ne signale aucune fuite.

Quelqu'un pourrait-il expliquer pourquoi?

grâce

+0

+1 Je ne comprends pas l'outil de fuite de mémoire non plus ...:/ –

+0

Oui, j'espère que quelqu'un pourrait vous aider. Je lis beaucoup sur l'outil. mais n'importe qui peut expliquer mon exemple ci-dessus? – Jack

Répondre

0

L'outil de fuites - soit en ligne de commande ou les allocations instruments - fait état d'une leak comme un objet qui ne est plus référencé par quoi que ce soit. Le problème, cependant, est qu'un pointeur perdu sur l'objet peut toujours être en mémoire quelque part, même si cette mémoire ne sera jamais relue.

I.e. l'instrument de fuite n'est pas précis à 100% et s'efforce de ne pas donner de faux positifs (qui sont beaucoup plus gênants).

J'utilise généralement l'outil Allocations, je parcours la liste des objets qui sont "live" à un moment donné et justifie mentalement leur existence.

Vous avez raison en ce que ledit extrait de code provoque une fuite de l'instance UIView. Si vous deviez build and analyze, je m'attendrais à ce que Xcode identifie le problème.

Questions connexes