我有一个UIViewController的子类也实现了UITableViewDelegate。
基本上,有一个UITableView显示,并选择一个单元格推新视图。
以下是有关代码看起来:objective C无法释放UIViewController
// NavigationContentsViewController.h
@interface NavigationContentsViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
IBOutlet UITableView * newsTable;
UIActivityIndicatorView * activityIndicator;
}
///////////////////////////////////////////////////////////////////////
// placed in NavigationContentsViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSInteger selectedCellItem = indexPath.row;
TableViewController *fvController = [[TableViewController alloc] initWithNibName:@"TableViewController" bundle:[NSBundle mainBundle]];
fvController.selectedCellItem = selectedCellItem;
fvController.link = [links objectAtIndex:selectedCellItem];
[self.navigationController pushViewController:fvController animated:YES];
[fvController release]; // #1 if removed everything works fine but getting a leak
fvController = nil; // #2
}
///////////////////////////////////////////////////////////////
// TableViewController.h
@interface TableViewController : UIViewController <UIWebViewDelegate>{
NSInteger selectedCellItem;
IBOutlet UIWebView *myWebView;
NSString *link;
UIActivityIndicatorView *activityIndicator;
}
所以,当用户选择了一个小区,一个新的UIWebView推。
还有一个活动指示器显示,直到webView完成加载。
我的问题是,如果用户选择在webView完成加载之前从webView回到前一个视图(带有表格的视图),则应用程序崩溃,出现此错误:“[TableViewController respondsToSelector:] :消息发送到释放实例0x4b57460“
如果webView已完成加载,并且用户选择返回一切正常。
我设法解决这个问题,通过删除代码中标记为#1和#2的两行,但然后我得到一个内存泄漏(因为我不释放TableViewController)。
仍试图了解发生了什么。有任何想法吗?提前致谢。
这正是我正在做的,这正是我所缺失的......非常感谢回复!接受的答案;) – CrisDeBlonde 2011-03-04 00:33:27