使用UIButton进行内存管理

时间:2011-08-01 15:25:05

标签: objective-c ios memory-management uibutton

我在掌握内存管理方面遇到了一些问题。我正在使用循环将图像和按钮添加到主视图中。图像正确释放,但不是按钮。

我的问题归结为,给出以下代码,为什么当我按下按钮清除屏幕时,内存是否未释放? UIButton是从UIButtonType自定义自动释放的,而setImage自动释放传输地图。

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIButton *homeButton = [UIButton buttonWithType:UIButtonTypeCustom];

    [homeButton setFrame:[UIScreen mainScreen].bounds];
    [homeButton setBackgroundColor:[UIColor blueColor]];
    [homeButton setImage:[UIImage imageNamed:@"TransportationMap.png"] forState:UIControlStateNormal];
    homeButton.tag = 9399;
    [homeButton addTarget:self action:@selector(clearScreen) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:homeButton];
}

-(void)clearScreen 
{    
    for (UIView *view in [self.view subviews]) {
        [view removeFromSuperview];
    }
}

2 个答案:

答案 0 :(得分:1)

在我看来,你没有在任何代码中分配任何内存,所以你也不需要发布任何内容。

答案 1 :(得分:1)

你担心你不需要放置它们...... Apple的内存管理规则规定你拥有的任何东西(你分配,复制或保留的任何东西),你负责释放。除此之外,你通常不应该关心发生了什么。 Apple可能会为了自己的目的而缓存图像......操作系统有责任处理它,而不是你的。在您的代码中,您遵守所有规则(据我所知)...您没有分配或保留按钮或图像。因此,您不应该担心释放或释放内存。让框架处理它。