Iphone UtableView泄漏?
我有一个UITableViewController,我在Iphone UtableView泄漏?,iphone,memory-management,uitableview,memory-leaks,Iphone,Memory Management,Uitableview,Memory Leaks,我有一个UITableViewController,我在viewDidLoadMethod中设置了一些属性,如下所示: - (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self.parentV
viewDidLoadMethod
中设置了一些属性,如下所示:
- (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时,“泄漏”报告了一些泄漏。但是,如果我注释掉//设置表
之后的四行,则一切正常
当四行未注释时,泄漏仪表显示以下内容:
我不知道这里发生了什么,但真的很烦人。我以前使用过相同的四行代码来定制UITableViewController,这是一种新的行为
可能有什么问题?看起来您的数组或字典正在泄漏,而不是tableview 用于填充tableview的数组是什么 另外,您也不希望使用框架
[self.tableVIew initWithFrame
,
尝试
[self.tableView setFrameCGRectMake(x,y,w,h)];
看起来您的数组或字典正在泄漏,而不是tableView
用于填充tableview的数组是什么
另外,您也不希望使用框架[self.tableVIew initWithFrame
,
请尝试
[self.tableView setFrameCGRectMake(x,y,w,h)];
如果self.tableView已经存在,您不想再次初始化它。或者初始化它一次(我猜您已经初始化了,可能是从nib加载),然后如果需要,在此处重置帧
或者在这里alloc/init tableview。如果self.tableview已经存在,您不想再次初始化它。或者初始化一次(我猜您已经初始化了,可能是从nib加载),然后如果需要,在这里重置帧
或者在这里alloc/init tableview。也许您可以尝试将UIBarButtonim定义为变量,然后将其分配给导航左栏按钮项,然后释放按钮 你试过在build菜单下构建和分析吗?使用2.0 Objective C语句非常准确 此外,您必须小心属性定义,您使用的是self.tableView,我假设您有类似@property(nonatomic,retain)的东西,在这种情况下,一旦您alloc,您应该在下一行中释放属性 最后,这一行非常奇怪:[self.tableView initWithFrame:self.tableView.frame-style:UITableViewStyleGrouped];您正在尝试初始化一个已初始化的表,因为如果不初始化,self.tableView.frame应该会出错。此外,initWithFrame方法返回一些未分配的内容。我认为您可以考虑一种更好的方法来完成此操作 很抱歉搞得一团糟,我在聊天中一直在回答这个问题,但不幸的是,您的连接断开了
希望这有帮助。也许您可以尝试将UIBarButtonim定义为变量,然后将其分配给导航左栏按钮项,然后释放按钮 你试过在build菜单下构建和分析吗?使用2.0 Objective C语句非常准确 此外,您必须小心属性定义,您使用的是self.tableView,我假设您有类似@property(nonatomic,retain)的东西,在这种情况下,一旦您alloc,您应该在下一行中释放属性 最后,这一行非常奇怪:[self.tableView initWithFrame:self.tableView.frame-style:UITableViewStyleGrouped];您正在尝试初始化一个已初始化的表,因为如果不初始化,self.tableView.frame应该会出错。此外,initWithFrame方法返回一些未分配的内容。我认为您可以考虑一种更好的方法来完成此操作 很抱歉搞得一团糟,我在聊天中一直在回答这个问题,但不幸的是,您的连接断开了
希望这有帮助。正如其他答案所指出的,您的问题是:
[self.tableView initWithFrame:self.tableView.frame style:UITableViewStyleGrouped];
它将创建一个新的
UITableView
对象,它将不修改self.tableView
,这意味着该行完全没有意义。它只会创建您正在经历的泄漏。移除它,您应该会没事。正如其他答案所指出的,您的问题是该行:
[self.tableView initWithFrame:self.tableView.frame style:UITableViewStyleGrouped];
它将创建一个新的
UITableView
对象,它不会修改self.tableView
,这意味着该行完全没有意义。它只会创建您正在经历的泄漏。移除它,您应该会没事。在dealloc方法中显式释放tableView,看看会发生什么
或者更好的方法是,清除所有->构建和分析,告诉我们您看到了什么在您的dealloc方法中显式地释放tableView,看看会发生什么
或者更好的方法是,清除所有->构建和分析,告诉我们您看到了什么,然后如何更改表视图的样式?创建
UITableView
时,您不能更改表样式。您是否使用NIB和界面生成器?然后您可以在那里更改样式。否则,您可以在loadView
或在cr中进行更改使用initWithStyle:
使用UITableViewController
。然后如何更改表视图的样式?创建UITableView
时不能更改表样式。是否使用NIB和界面生成器?然后可以在那里更改样式。否则,可以在loadView
或您正在使用initWithStyle:
创建UITableViewController
。感谢这一伟大的技巧。它有时会工作,但并不总是如此。如果我释放tableView,它会在下次尝试加载时崩溃。大多数情况下,您需要发布更多代码,以便有人帮助您。您向我们展示的是一个基本对象rete有问题,如果你还有