2011-06-10 9 views
5

Merhaba bir UIWebView sızdıran bellek temel ile ilgili sorunlar yaşıyorum WebView ekran sayfaları başka bir denetleyiciden bir UITableView olan bağlantılarla var. Denetleyiciyi Web Gezgini ile bir gezgiyle itin ve bağlantıyı bir mülkiyeti elinde tut. Ben gibi internette her şeyi denedimIOS UIWebView Sızıntı

:

-(void) viewWillAppear:(BOOL) animated 
{ 
    NSMutableURLRequest *_req=[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:link] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:120]; 

    [_req setHTTPShouldHandleCookies:NO]; 
    [self setMyRequest:_req]; 
    [req release]; 
} 

[webView loadRequest:myRequest]; 

-(void) viewWillDisappear:(BOOL) Animated 
{ 
    [webView stopLoading]; 
    [webView loadHTMLString:@"<html></html>" baseURL:nil]; 
} 

- (void)dealloc { 
    [myRequest release]; 
    [webView stopLoading]; 
    [webView release]; 
    [link release]; 
    [super dealloc]; 
} 
:

[[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"WebKitCacheModelPreferenceKey"]; 

//Clear cache of UIWebView 
NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil]; 
[NSURLCache setSharedURLCache:sharedCache]; 
[sharedCache release]; 
sharedCache = nil; 
[[NSURLCache sharedURLCache] removeAllCachedResponses]; 

bu benim kodudur

Şimdi simülatör 4.2 ve 4.3 üzerinde test ettim, xcode 4 kullanıyorum, navigator üzerindeki geri düğmesine bastığımda bu sızıntıları alıyorum. http://postimage.org/image/368r0g0xw/

Herhangi bir yardım i Şimdi Teşekkür

+0

Kodlarınızdan biri, herhangi bir yöntem dışında görünür, gerçek kodunuzu gönderebilir misiniz? Bu derleme yapmaz. MyRequest’in tahsis edilmesi/atanması nerede? Link ne olacak? UIWebView için bir delege belirlediniz mi? – Jim

+0

Üzgünüm, şimdi kodu göndereceğim –

cevap

1
-(void) viewWillAppear:(BOOL) Animated 
{ 
    //CONNECTION INIT 
    [web setDelegate:self]; 

    NSURL *url=[[NSURL alloc] initWithString:link]; 

    NSURLRequest *_req=[[NSURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:120]; 

    [self setReq:_req]; 

    [_req release]; 
    [url release]; 
    [web loadRequest:req]; 


} 

-(void) viewWillDisappear:(BOOL) Animated 
{ 
    [self setReq:nil]; 
    if ([web isLoading]) 
    [web stopLoading]; 
    [web setDelegate:nil]; 
} 

- (void)dealloc { 
    [req release]; 
    [map release]; 
    [web setDelegate:nil]; 
    [web release]; 
    [link release]; 
    [super dealloc]; 
} 

mutluluk duyacağız:

Ve burada bir ekrana bir bağlantı benim tableview Kontrolörü Burada

- (void)viewDidLoad { 
    webViewController=[[ItemDetail alloc] initWithNibName:@"ItemDetail" bundle:[NSBundle mainBundle] ]; 

    [super viewDidLoad]; 
} 


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    webViewController.link=http://www.myLink.com; 
    [self.navigationController pushViewController:webViewController animated:YES]; 

} 

-(void) dealloc 
{ 
    [webViewController release]; 
    ... 
    ... 
    [super dealloc]; 
} 

gelen kod olmasıdır Tablo görünümüne geri döndükten sonra onu serbest bırakıyorum, bıraktıktan sonra hala yaklaşık 3 mb kalıyor, ama şimdi tekrar görünümü oluşturduğumda ve aga bıraktığımda Bu 3mb de değişmez. Garip ...

Item Detail *webViewController=[[ItemDetail alloc] initWithNibName:@"ItemDetail" bundle:[NSBundle mainBundle] ]; 


    [self.navigationController pushViewController:webViewController animated:YES]; 
    [webViewController release];