0

让我简要介绍一下我的应用程序,我有根视图标签栏控制器(5 个标签),第一个视图是导航控制器;它是一个 iPad 应用程序。现在我有一个表格视图,我正在通过 CODE 制作标题。

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
 { 
    _headerScenarioIDLabel = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
   //and many more declarations here

}

并相应地从

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{
    if (UIInterfaceOrientationIsLandscape(fromInterfaceOrientation))
    {// for portrait.
     _headerScenarioIDLabel.frame        = CGRectMake(-30, 2, 125, 20);
    }
   else
   { // for LandScape
          _headerScenarioIDLabel.frame        = CGRectMake(-26, 2, 125, 20);
    }
}

现在的问题是,当我启动应用程序并旋转它时,这段代码工作得很好,但是当我进入导航并从导航返回时,应用程序在进一步旋转时崩溃。

线程 1 EXE 访问错误,0x1bd109b:movl 8(%edx),%edi

任何人都可以建议我在这个奇怪的崩溃中错在哪里.. ???

4

1 回答 1

0

使用静态分析器检查您的代码是否存在泄漏。另外,我看到的第一件事是您正在_headerScenarioIDLabel使用自动释放的对象初始化 ivar - 您需要修复此问题,因为 ivar 应该拥有指向标题视图的强指针。另请记住,该方法-tableView:viewForHeaderInSection:可能会被多次调用,这就是为什么您需要在再次设置之前释放此 ivar。所有这些问题的简单解决方案是使用属性......并且始终使用属性,尤其是在使用手动内存管理时。

于 2013-01-08T08:30:06.373 回答