自定义初始化中的内存分配

时间:2015-12-16 11:16:28

标签: ios objective-c memory-leaks profiler

在我的代码上运行分配探查器。在插入的代码上发现以下问题。有人可以指出我代码中有什么问题。添加了图片,以便显示颜色编码。 enter image description here

初始化点的代码如下:

@autoreleasepool {

if(!coordString){
    return nil;
}
if([coordString length]<3){
    return nil;
}

__weak NSArray* coords=[coordString componentsSeparatedByString:@","];
    if(nil != coords && ([coords count]==2)){
    self = [super init];
    if(nil != self){
        self.coordX=  [[coords objectAtIndex:0] doubleValue];
        self.coordY = [[coords objectAtIndex:1] doubleValue];

        return self;
    }else {
        return nil;
    }

    }else{

        return nil;
    }
}

请说明问题所在。 分配快照表示持久性内存。 enter image description here

1 个答案:

答案 0 :(得分:0)

  • 在上面的问题引发的内存相关问题上没有直截了当的解决方案,因为代码中没有明确的错误。泄漏没有挑选任何具体的东西。因此上面的@Avi给了我一个暗示&#34;持续&#34;表示放弃的分配。所以他上面的评论给了我一个方向,我需要调查其他地方的问题。
  • 没有观看过的人应该花时间使用“https://developer.apple.com/videos/play/wwdc2012-242/
  • 上的工具了解处理内存问题
  • 更重要的是创建&#34; dealloc&#34;为您的类提供函数并为您的代码创建释放代码并将指针设置为nil。在我的上述情况中,我确保使用以下代码执行此操作:

    - (void)dealloc { if(nil!= self.arrVertices&amp;&amp; [self isKindOfClass:[SPCPlane2D class]]){     [self.arrVertices removeAllObjects];  }  self.arrVertices =无; }

经过几个小时的挖掘,我得到的仪器显示如下

enter image description here