首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UITableView泄露?

UITableView泄露?
EN

Stack Overflow用户
提问于 2010-12-01 01:12:31
回答 5查看 341关注 0票数 0

我有一个UITableViewController,我在viewDidLoadMethod中设置了一些属性,如下所示:

代码语言:javascript
复制
- (void)viewDidLoad {
    [super viewDidLoad];

    self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self.parentViewController.parentViewController action:@selector(dismissSettings)] autorelease];
    [self setTitle:@"Gabbai Settings"];

    //Set up the table 
    [self.tableView initWithFrame:self.tableView.frame style:UITableViewStyleGrouped];

    [self.tableView setRowHeight:65.0];
    [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleSingleLineEtched];

    [self.tableView.backgroundView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@_settings", kTheme] ofType:@"png"]]]];


}

这个应用程序显示了一个UIScrollViewController和一个UIButton。当按下按钮时,应用程序会显示一个模式UINavigationController,并且该UINavigationController包含一个UITableViewController。

由于某些原因,当我显示UITableViewController时,Leaks报告了一些泄漏。但是,如果我注释掉//Set up the table后面的四行,一切都很好。

当这四行未注释时,泄漏仪器将显示以下内容:

我不知道这是怎么回事,但这真的很烦人。我之前使用了相同的四行代码来自定义我的UITableViewController,这是一种新的行为。

会出什么问题呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-12-01 02:17:32

正如其他答案所指出的,你的问题就是这行:

代码语言:javascript
复制
[self.tableView initWithFrame:self.tableView.frame style:UITableViewStyleGrouped];

它将创建一个新的UITableView对象,并且它不会修改 self.tableView,这意味着该行是完全没有意义的。它只会造成您正在经历的泄漏。去掉它,你就会好起来的。

票数 1
EN

Stack Overflow用户

发布于 2010-12-01 02:40:31

在你的dealloc方法中显式地释放tableView,看看会发生什么。

或者更好,清理所有的->构建和分析,告诉我们你看到了什么

票数 2
EN

Stack Overflow用户

发布于 2010-12-01 01:31:13

如果self.tableview已经存在,您不会想要再次初始化它。初始化它一次(我猜你已经这样做了,可能是通过从nib加载),然后如果需要的话,在这里重置框架。

或者只是在这里分配/初始化表视图。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4316453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档