2012-03-28 70 views
0

我分析了我的代碼,它使用WebViewController,我得到內存泄漏。Xcode內存泄漏?

這個簡單的代碼真的會導致這樣的問題嗎?

- (IBAction) google: (id) sender { 
    NSURL *url = [NSURL URLWithString:@"http://www.google.com/"]; 
    WebViewController *webViewController = [[WebViewController alloc] initWithURL:url andTitle:@"Google"]; 
    [self presentModalViewController:webViewController animated:YES]; 
    //[webViewController release]; 
} 

如果我取消註釋該版本,則不會泄漏,但在通過Google點擊幾次後,它會使程序崩潰。所以我不確定我是否應該在程序中留下泄漏,因爲至少在那時它可以工作。誰能提供一些見解?因此,在webview中導航頁面並單擊完成按鈕後,它將返回我的主視圖1秒鐘並崩潰。

崩潰輸出(在WebThread) http://pastebin.com/A8ELm18R

+0

您可以發佈它在XCode中說,當它崩潰?你有什麼不是很有幫助。 – rosslebeau 2012-03-28 02:06:04

回答

1

您需要在以後的時間版本的Web視圖,您使用它完成之後。跟蹤它的財產,然後當你解僱的模式,你可以釋放它。

你也可以使用自動釋放像這樣:

- (IBAction) google: (id) sender { 
    NSURL *url = [NSURL URLWithString:@"http://www.google.com/"]; 
    WebViewController *webViewController = [[[WebViewController alloc] initWithURL:url andTitle:@"Google"] autorelease]; 
    [self presentModalViewController:webViewController animated:YES]; 
} 
+1

或者採取簡單的(並不那麼高效)的方式.. autorelease! :P – Neo 2012-03-28 01:20:43

+1

沒錯,這應該也可以。我只是關於管理我的記憶肛門:) – rosslebeau 2012-03-28 01:25:50

+0

是啊我幾乎試過一切,autorelease比只留下內存泄漏更好嗎?你能告訴我它是如何實現的嗎 – user1296841 2012-03-28 01:36:38