0

I have a favorites popover and a webView. When you select a cell in the tableview of the popover, the webview should load that URL, but I get a SIGABRT or a BAD_ACCESS.

Here's some code:

- (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];
    }
}

I want to get something like this but full working:

example image

PS: The popover is a new viewController from the same class where the webview is set.

4

2 回答 2

1

既然你没有retain牢房,你就不应该这样release做......几乎可以肯定,你的崩溃来自哪里。

此外,您在不使用自动释放的情况下使用 alloc/init 会泄漏一些内存。尝试这个

- (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];
    }
}
于 2012-04-18T13:00:41.587 回答
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];
    }
}

什么是网络变量?它也可能导致问题。

于 2012-04-18T12:59:54.213 回答