2011-11-21 46 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类。请记住,可能已创建一个方法新的不符合约定。