模态视图控制器出现缓慢

时间:2011-04-10 11:07:08

标签: cocoa-touch ios

在呈现模态视图控制器时,我很难调试问题。我看到在调用viewWillAppear和在呈现的(表视图)控制器上调用viewDidAppear之间暂停0.5秒到1秒之间。我尝试用裸骨表视图控制器替换它,看看问题是否在调用presentModalController的控制器中,并且它按预期快速出现。

我试图用NSLog语句来控制两个控制器以试图诊断问题,但是不能将其缩小到比viewWillAppear和viewDidAppear之间的延迟更短的时间。

如果没有逐行重写控制器,那么找出问题所在的最佳方法是什么?我应该注意到这里有任何常见的嫌疑人吗?

编辑:使用有问题的代码进行更新

表格视图显示2个单元格,每个单元格包含一个文本字段。

我为2个文本字段中的每一个都有UITextField属性

@property (nonatomic, retain) IBOutlet UITextField *itemTextField;

并将文本字段分配给这些属性,如下所示:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

        if (indexPath.row == 0) {
            UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(110, 10, 185, 30)];
            textField.delegate = self;

            cell.textLabel.text = @"Item";
            textField.placeholder = @"Enter item name";
            textField.keyboardType = UIKeyboardTypeDefault;
            textField.returnKeyType = UIReturnKeyNext;
            self.itemTextField = textField;
            [cell addSubview:textField];
            [textField release];
        }
    }
    return cell;
}

我遗漏了第二行,但代码是一样的。

如果我发表评论

self.itemTextField = textField;

视图按预期加载,但未注释导致我看到的轻微延迟。我应该在其他地方而不是在cellForRowAtIndexPath中初始化它吗?我有点难过。

2 个答案:

答案 0 :(得分:1)

在Instruments中使用Time Profiler查看哪个是违规代码。另请注意,过度记录本身会导致明显的速度降低。可能的情况是为您的表格视图提供数据的昂贵方法,也许是自定义高度?或者同步从网络加载内容。

答案 1 :(得分:1)

遇到同样的问题。只是用barrym的评论来修复它。只需将becaomeFirstResponder代码移至viewDidAppear

即可