我在掌握内存管理方面遇到了一些问题。我正在使用循环将图像和按钮添加到主视图中。图像正确释放,但不是按钮。
我的问题归结为,给出以下代码,为什么当我按下按钮清除屏幕时,内存是否未释放? 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];
}
}
答案 0 :(得分:1)
在我看来,你没有在任何代码中分配任何内存,所以你也不需要发布任何内容。
答案 1 :(得分:1)
你担心你不需要放置它们...... Apple的内存管理规则规定你拥有的任何东西(你分配,复制或保留的任何东西),你负责释放。除此之外,你通常不应该关心发生了什么。 Apple可能会为了自己的目的而缓存图像......操作系统有责任处理它,而不是你的。在您的代码中,您遵守所有规则(据我所知)...您没有分配或保留按钮或图像。因此,您不应该担心释放或释放内存。让框架处理它。