2011-11-21 79 views
0

我在我的項目中使用DSBezelActivityView得到了一個UIWebView,但它似乎有內存泄漏。當頁面加載時,我使用DSBezelActivityView。它的工作原理與內存泄漏一樣。我如何解決這個內存泄漏?內存泄漏DSBezelActivityView

我用這個代碼: http://www.dejal.com/developer/dsactivityview

這就是分析說: 對象泄露:分配對象未在此執行路徑以後引用並具有+1 方法一個保留計數返回一個Objective-C用+1的對象保留計數

- (void)viewDidLoad 
{ 

NSString *urlAddress = [NSString stringWithFormat:@"http://www.google.be"]; 

//Create a URL object. 
NSURL *url = [NSURL URLWithString:urlAddress]; 

//URL Requst Object 
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
webView.delegate = self; 

//Load the request in the UIWebView. 
[webView loadRequest:requestObj]; 
[super viewDidLoad]; 

} 
- (void)webViewDidStartLoad:(UIWebView *)webView { 
[DSBezelActivityView newActivityViewForView:aiv withLabel:@"Laden..." width:90]; 
NSLog(@"werkt dit"); 

} 
- (void)webViewDidFinishLoad:(UIWebView *)webView { 
[DSBezelActivityView removeView]; 

} 

回答

1

好像你已經通過泄漏返回newActivityViewForView:withLabel:width對象。

根據蘋果的documentation

你擁有的任何對象創建

您創建使用名稱以「黃金」,「新」,「複製」對象的方法,或「mutableCopy」(例如 示例,alloc,newObject或mutableCopy)。

因此,您需要在適當的時刻釋放對象,我認爲它是webViewDidFinishLoad:。你的代碼應該是這樣的:

- (void)webViewDidStartLoad:(UIWebView *)webView { 
    DSBezelActivityView *bezelActivityView = [DSBezelActivityView newActivityViewForView:aiv withLabel:@"Laden..." width:90]; 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    [DSBezelActivityView removeView]; 
    [bezelActivityView release]; 
    bezelActivityView = nil; 
} 

我這樣做,我的答案是基於可可內存管理約定不是這個DSBezelActivityView類。請記住,可能已創建一個方法新的不符合約定。