代码之家  ›  专栏  ›  技术社区  ›  mmc

将元素放入uiTableView页脚,何时释放它们?

  •  1
  • mmc  · 技术社区  · 16 年前
    - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
        AViewController * aView = [[AViewController alloc] initWithNibName:@"myNib" bundle:[NSBundle mainBundle]];    
        return vintagePriceRowView.view;
    }
    

    我知道这段代码需要发布…某处。但是在哪里呢?如果我将分配的aviewcontroller设置为autorelease,那么触摸视图中的元素将导致“消息发送到已解除分配的实例0xfb5780”

    泄漏仪器实际上没有显示泄漏,但显然Clang不喜欢上述代码。我知道clang并不是福音,因为它决定了在你的代码中可能出现的所有错误,但在这种情况下,它 感觉 好像这可能是对的。我已经分配了,我需要释放它。

    我做错了什么有什么想法吗?

    2 回复  |  直到 16 年前
        1
  •  2
  •   Jasarien    16 年前

    为了提高效率,您应该在需要视图之前创建将在页脚中使用的视图。可能在viewdidLoad中创建它并将其存储在一个成员变量中。

    然后,在viewForFooter方法中,只需返回先前存储的视图。

    然后在TableViewController的DealLoc方法中,释放视图。

        2
  •  1
  •   freespace    16 年前

    你必须坚持到不再需要它为止。

    我建议做一个私人财产,把它设为 nil 最初,然后惰性加载NIB并将返回的视图分配给属性。然后在 dealloc 或在 viewDidUnload 只需将其设置为 通过设定器。

    你当然需要 release autorelease 一旦你将它分配给私有财产,因为设置者会为你保留它。