ios - 分配时的内存泄漏

标签 ios objective-c swift memory-management instruments

enter image description here

我是一个初学者,仍在尝试弄清楚如何阅读本文。 有 3 个自定义 View ,一开始我分配第一个。 然后第二个/取消分配第一个,然后第三个/取消分配第二个。

我在释放每个 View 之前清空/清空所有数组,所以从我看来,每次分配 View 时保留的所有内存,每当我释放/清空它们时都应该释放,但在图表中它不断增加,我不这样做根本没有看到任何内容被发布。

应该是这样的吗?我将委托(delegate)、数组、字典等全部清零。

-(void)firstTOsecond {

[self.first removeFromSuperview];
self.first.delegate = nil;
self.first = nil;


self.second = [[Second alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[self.view addSubview:self.second];
self.second.delegate = self;}

-(void)secondTOthird {

[self.second removeFromSuperview];
self.second.delegate = nil;
self.second = nil;


self.third = [[Third alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[self.view addSubview:self.third];
self.third.delegate = self;}

编辑

在 First.m/Second.m/Third.m

-(instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
    self.buttonStartFrame = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"buttonStartFrame"]];
    [self addSubview:self.buttonStartFrame];
    self.buttonStartFrame.userInteractionEnabled = YES;
    self.buttonStartButton = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"buttonStartDefault"]];
    [self.buttonStartFrame addSubview:self.buttonStartButton];
    self.buttonStartButton.userInteractionEnabled = YES;
    self.labelStart = [[UILabel alloc]init];
    [self.buttonStartButton addSubview:self.labelStart];
    self.labelStart.textColor = [UIColor darkGrayColor];
    self.labelStart.text = @"Start";
    }
return self;}

最佳答案

内存泄漏可能是因为您在可以更新的情况下不断创建新的 View 元素。您可以创建辅助方法以避免分配新 View ,并在主线程上更新 View 元素

- (void)limitedUpdateTextColorView:(NSDictionary *)somethingCache {
    self.labelStart.textColor = [somethingCache valueForKey:@"bar"];
    self.labelStart.text = [somethingCache valueForKey:@"foo"];
}

关于ios - 分配时的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37265967/

相关文章:

iphone - 如何在选择器 View 列表更新时获取调用的函数?

swift - C++ 的 std::map 在 Swift 中的等价物是什么?

swift - 您的规范源都不包含满足依赖关系的规范

ios - 如何分析 iOS 应用程序以在 theos 中进行调整

objective-c - 启用页面和设备旋转/方向更改的 UIScrollView (MADNESS)

ios - swift iOS 10 无法重新注册推送通知,缺少什么?

ios - AVCapture 任意形状镜头

ios - 使用 NSPredicate 实现高效的 PFQuery

iphone - ios UISwipeGestureRecognizer 计算偏移量

ios - Swift 3 将图像添加到文档并检索