2010-09-06 5 views
0

dans mon application j'ai une uiwebview que j'ai utilisé pour afficher le fichier image. maintenant le problème est que je reçois une fuite dans cette vue. J'ai écris le code suivant ici.fuite de mémoire sur uiwebview alloc

UIWebView *the_pWebView = [[UIWebView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; // the leak is on this line. 
the_pWebView.backgroundColor = [UIColor whiteColor]; 
the_pWebView.scalesPageToFit = YES; 
the_pWebView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); 
the_pWebView.delegate = self; 

self.m_pWebView = the_pWebView; 
[self.view addSubview: self.m_pWebView]; 
[the_pWebView release]; 

quelqu'un peut plz dire pourquoi la ligne Frist du code, où je suis allocing UIWebView serait une fuite. même si je l'ai libéré?

Répondre

2

Si la propriété est m_pWebViewretain ou copy alors vous devez vous assurer que vous le libériez dans votre méthode dealloc sur cette classe. Je suppose que vous ne le publiez pas ici.

+0

pour m_pWebView, j'ai défini propriété (nonatomic, retain) et l'a également libérée dans la méthode dealloc. même alors, cette fuite est montrée. – Jayshree

0

Vous devez également libérer self.m_pWebView après l'avoir ajouté à self.view

+0

je l'ai publié dans la méthode dealloc. Je ne peux pas le libérer dès que je l'ajoute à self.view. Je l'utilise aussi dans d'autres endroits. – Jayshree

+0

Le nombre de rétention après l'avoir ajouté à self.view est 2, vous devriez alors le relâcher pour que la fonction dealloc puisse le détruire complètement! – Mayosse

+0

Mise à jour: si vous ajoutez self.m_pWebView à self.view, vous n'êtes plus responsable de son désallocation (si vous le relâchez après l'opération d'ajout). self.view va détruire ses sous-vues sur dealloc. – Mayosse

0

dans viewDidLoad

[self performSelectorOnMainThread:@selector(abc) withObject:nil waitUntilDone:YES]; 

puis faire un nom de fonction est abc

-(void) abc 
    { 

UIWebView *the_pWebView = [[UIWebView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 

the_pWebView.backgroundColor = [UIColor whiteColor]; 

the_pWebView.scalesPageToFit = YES; 

the_pWebView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); 

the_pWebView.delegate = self; 

self.m_pWebView = the_pWebView; 


    [self.view addSubview: self.m_pWebView]; 

    [the_pWebView release]; 

iWebView=nil; 

}