Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UtableView泄漏?_Iphone_Memory Management_Uitableview_Memory Leaks - Fatal编程技术网

Iphone UtableView泄漏?

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

我有一个UITableViewController,我在
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有问题,如果你还有