我有一個擴展的UIViewController並實現UIWebViewDelegate,像這樣一類:UIWebView的泄漏
@interface TableViewController : UIViewController <UIWebViewDelegate, UIAlertViewDelegate>{
UIWebView *articleWebView;
NSString *link;
UIActivityIndicatorView *activityIndicator;
NSURL * safariUrl;
}
我想一個網頁加載到一個UIWebView,一切工作正常,但我發現了一些泄漏(像GeneralBlock-56,GeneralBlock-1024等),我找不到它們來自哪裏。
這是我在做什麼:
- (void)viewDidLoad {
[super viewDidLoad];
if (articleWebView){
[articleWebView loadHTMLString: @"" baseURL: nil];
[articleWebView release];
articleWebView = nil;
}
articleWebView = [[UIWebView alloc] initWithFrame: CGRectMake(0,0,320,380)];
if (activityIndicator){
[activityIndicator release];
activityIndicator = nil;
}
activityIndicator = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(self.view.bounds.size.width/2-24, self.view.bounds.size.height/3-12, 50, 50)];
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
[self.view addSubview:activityIndicator];
link = [link stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
link = [link stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
link = [(NSString*) CFURLCreateStringByAddingPercentEscapes (NULL, (CFStringRef)link, NULL,
NULL, kCFStringEncodingUTF8) autorelease];
NSURL *url = [NSURL URLWithString:link];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[[self articleWebView] setDelegate: self];
[articleWebView loadRequest:requestObj];
[link release];
}
//////////////////////////////////////////////
-(void)webViewDidFinishLoad:(UIWebView *)webView{
if (activityIndicator){
[activityIndicator stopAnimating];
[activityIndicator release];
activityIndicator = nil;
self.view = articleWebView;
}
//////////////////////////////////////////////
- (void)viewDidUnload {
[super viewDidUnload];
[articleWebView loadHTMLString: @"" baseURL: nil];
[self.articleWebView release];
self.articleWebView = nil;
}
//////////////////////////////////////////////
- (void)dealloc {
self.articleWebView.delegate=nil;
[super dealloc];
}
我到底做錯了什麼?先謝謝你。
非常感謝您的回答。你是對的,起初我雖然會通過界面生成器,然後改變了主意,但忘了刪除IBOutlet。我會更新我的問題。無論如何,刪除它仍然留下2泄漏(GeneralBlock56,GeneralBlock-1024)。任何想法我做錯了什麼? – CrisDeBlonde 2011-05-25 12:02:07
哪個對象負責泄漏。使用構建和分析並查看泄漏是如何發生的。只要確保你釋放了所有當你不再需要它們時所擁有的對象 – visakh7 2011-05-25 12:07:13
我已經試過了這些。在樂器中,當我嘗試雙擊泄漏以查看它來自哪裏時,它只是說「不可用」,所以我無法找到泄漏的來源。無論如何,感謝您的嘗試:) – CrisDeBlonde 2011-05-25 12:13:45