2012-04-18 77 views
0

我有一個收藏夾彈出窗口和一個webView。當你在popover的tableview中選擇一個單元格時,webview應該加載這個URL,但是我得到了一個SIGABRT或者一個BAD_ACCESS。無法加載網址中的彈出窗口的URL

下面是一些代碼:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
if (tableView == favoritesTable1) { 
     UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
     textField.text = cell.textLabel.text; 
     [web loadRequest:[[NSURLRequest alloc] initWithURL:[[NSURL alloc] initWithString:cell.textLabel.text]]]; 
     [cell release]; 
     [favoritesTable1 reloadData]; 
    } 
} 

我想是這樣的,但完整的工作:

example image

PS:本酥料餅是一種新的viewController同一類,其中的WebView已設置。

+0

現在究竟是'web' var來自哪裏? – 2012-04-18 12:56:55

+0

請向我們展示更多代碼和錯誤日誌。 – Stavash 2012-04-18 12:59:26

回答

0

您使用alloc init初始化NSURLRequest & NSURL,它們都返回保留對象,請確保根據內存管理規則正確初始化它們。我也看到你釋放細胞 - 你不必因爲你不擁有它。試試這種方式:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
if (tableView == favoritesTable1) { 
     UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
     textField.text = cell.textLabel.text; 
     NSURL *url = [[NSURL alloc] initWithString:cell.textLabel.text]; 
     NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; 
     [web loadRequest:request]; 
     [url release]; 
     [request release]; 
     [favoritesTable1 reloadData]; 
    } 
} 

什麼是網絡變種?它也可能導致問題。

+0

web是UIWebView – adr 2012-04-18 15:12:22

+0

解決方案解決了問題嗎?如果不顯示一些代碼,你如何初始化UIWebView。 – graver 2012-04-18 16:30:37

1

既然你不是retain這個單元格,你應該不是release它......這幾乎可以肯定你的崩潰來自何處。

此外,你通過使用alloc/init泄漏一些內存而沒有autorelease。試試這個

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
    if (tableView == favoritesTable1) { 
     UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
     textField.text = cell.textLabel.text; 
     [web loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:cell.textLabel.text]]]; 
     [favoritesTable1 reloadData]; 
    } 
}