Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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
iOS 8 UITableView中的奇怪问题_Ios_Objective C_Uitableview_Ios8 - Fatal编程技术网

iOS 8 UITableView中的奇怪问题

iOS 8 UITableView中的奇怪问题,ios,objective-c,uitableview,ios8,Ios,Objective C,Uitableview,Ios8,我有一个UITableView,在主详细结构中有一个自定义UITableViewCell。表格的单元格可以是文档或文件夹…如果单元格是文档,它会在详细信息视图中打开文档,但如果是文件夹,它会打开下面的其他单元格。 这在iOS 7上运行得很好,但在iOS 8上运行时,当我点击手机时,我的应用程序会冻结,占用越来越多的内存……最后它崩溃了。 我什么都试过了…我到处都找过了…似乎什么都没用 这是我的didSelectRowAtIndexPath:method - (void)tableView:(UI

我有一个
UITableView
,在主详细结构中有一个自定义
UITableViewCell
。表格的单元格可以是文档或文件夹…如果单元格是文档,它会在详细信息视图中打开文档,但如果是文件夹,它会打开下面的其他单元格。 这在iOS 7上运行得很好,但在iOS 8上运行时,当我点击手机时,我的应用程序会冻结,占用越来越多的内存……最后它崩溃了。 我什么都试过了…我到处都找过了…似乎什么都没用

这是我的didSelectRowAtIndexPath:method

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSLog(@"OBJECTS: %lu", (unsigned long)_objects.count);
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    NSDictionary *d=[_objects objectAtIndex:indexPath.row];
    if([d valueForKey:@"Objects"])
    {
        NSArray *ar=[d valueForKey:@"Objects"];
        BOOL isAlreadyInserted=NO;
        for(NSDictionary *dInner in ar )
        {
            NSInteger index=[_objects indexOfObjectIdenticalTo:dInner];
            isAlreadyInserted=(index>0 && index!=NSIntegerMax);
            if(isAlreadyInserted) break;
        }
        if(isAlreadyInserted)
        {
            [self miniMizeThisRows:ar];
        }
        else
        {
            NSUInteger count=indexPath.row+1;
            NSMutableArray *arCells=[NSMutableArray array];
            for(NSDictionary *dInner in ar )
            {
                [arCells addObject:[NSIndexPath indexPathForRow:count inSection:0]];
                [_objects insertObject:dInner atIndex:count++];
            }

            [self addRowsAtIndexPaths:arCells];
        }
    }
    else
    {
        NSDictionary *object = [_objects objectAtIndex:indexPath.row];
        self.detailViewController.detailItem = [object objectForKey:@"name"];
        self.detailViewController.title = [object objectForKey:@"displayedName"];

        if(![cache containsObject:object])
        {
            TableCustomCell *cell = (TableCustomCell*)[tableView cellForRowAtIndexPath:indexPath];
            [cell.marker setHidden:NO];

            [cache addObject:object];
        }
    }
}
此外,我还想说:我就是这么做的

- (void)addRowsAtIndexPaths:(NSArray*)indexPaths
{
    [self.tableView beginUpdates];
    [self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationMiddle];
    [self.tableView endUpdates];
}
有人帮忙吗

多谢各位

编辑

我发现这个循环是由我的UITableViewCell子循环引起的。。。 我使用以下代码来管理缩进:

- (void)layoutSubviews
{
    [super layoutSubviews];

    float indentPoints = self.indentationLevel * self.indentationWidth;

    self.contentView.frame = CGRectMake(indentPoints,
                                        self.contentView.frame.origin.y,
                                        self.contentView.frame.size.width - indentPoints,
                                        self.contentView.frame.size.height);
}

通过对此进行评论,应用程序可以工作……但单元格没有缩进

在此冻结期间,尝试在调试器上按“暂停”按钮,查看调用堆栈,然后按“继续”按钮,再次按“暂停”按钮,查找调用,其中一个调用是相同的。它看起来像是调用循环。

对我来说,听起来确实像是“无限”递归。找到循环并找出它。找出导致循环的代码…这是我的UITableViewCell子类中LayoutSubView的重写!但是说到这里,缩进已经不起作用了!