iphone - 它会泄漏吗?

时间:2010-08-02 17:17:48

标签: iphone ipad

这是我不明白的。看看这个方法(从http://blog.blackwhale.at/2009/07/uibutton-in-uitableview-footer/复制)

看到footerView是在代码的开头分配的,从未发布过。 据我所知,该对象应该是自动释放的,或者至少在常规用例上使用后释放,但是当这些方法在构建时由表自动运行时,这个视图将被释放...

还是会泄漏?我已经看到Apple的代码示例有这样的东西,所以我想这个对象正在某个地方发布......但是在哪里?

// custom view for footer. will be adjusted to default or specified footer height
// Notice: this will work only for one section within the table view
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {

    if(footerView == nil) {
        //allocate the view if it doesn't exist yet
        footerView  = [[UIView alloc] init];

        //we would like to show a gloosy red button, so get the image first
        UIImage *image = [[UIImage imageNamed:@"button_red.png"]
  stretchableImageWithLeftCapWidth:8 topCapHeight:8];

        //create the button
        UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        [button setBackgroundImage:image forState:UIControlStateNormal];

        //the button should be as big as a table view cell
        [button setFrame:CGRectMake(10, 3, 300, 44)];

        //set title, font size and font color
        [button setTitle:@"Remove" forState:UIControlStateNormal];
        [button.titleLabel setFont:[UIFont boldSystemFontOfSize:20]];
        [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

        //set action of the button
        [button addTarget:self action:@selector(removeAction:)
                        forControlEvents:UIControlEventTouchUpInside];

        //add the button to the view
        [footerView addSubview:button];
    }

    //return the view for the footer
    return footerView;
}

感谢。

2 个答案:

答案 0 :(得分:2)

看到footerView是此类的实例变量,此代码是正确的。 footerView不是自动释放的(无论如何),只要你没有release它就会继续存在(因为你“拥有”/通过分配保留它)。适当的地方是这个班级的dealloc方法。

只要你这样做,这段代码对我来说是正确的。 :)

答案 1 :(得分:1)

footerView是一个实例变量。它是在该类的dealloc中发布的吗?