我在项目中使用DSBezelActivityView获得了一个UIWebView,但它似乎有内存泄漏。我在页面加载时使用DSBezelActivityView。它应该在内存泄漏旁边工作。我该如何解决这个内存泄漏?
我使用了这段代码: http://www.dejal.com/developer/dsactivityview
分析师说: 对象泄漏:以后在此执行路径中未引用已分配的对象,并且保留计数为+1 方法返回具有+1保留计数的Objective-C对象
- (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];
}
答案 0 :(得分:1)
好像你正在泄漏newActivityViewForView:withLabel:width
返回的对象。
根据Apple的documentation:
您拥有自己创建的任何对象
使用名称以“alloc”,“new”,“copy”或“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
课,所以我的回答是基于可可内存管理约定。请记住,这可能会创建一个以 new 开头的方法,该方法不符合惯例。