【发布时间】:2015-12-16 11:16:28
【问题描述】:
在我的代码上运行分配分析器。在插入的代码上发现以下问题。有人可以指出我的代码有什么问题。添加图片以显示颜色编码。
点初始化代码如下:
@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;
}
}
【问题讨论】:
-
您的代码没有任何意义。屏幕截图显示了不同的代码,您发布的内容看起来像是一个混乱的
init方法与某种 getter 相结合。 -
Avi,如果您仔细阅读评论,屏幕截图是平面对象的初始化,它使用另一个点对象的代码初始化,其中探查器以红色突出显示。作为参考,我添加了该行引用的代码。所以你可能误解了这个问题。
-
我明白了。感谢您的澄清。究竟是什么问题?您是否在某处看到内存泄漏?顺便说一句,您可能不应该在初始化程序中包含
@autorelease块。 -
您在此处发布的视图是终身分配,而不是当前分配。预计会上涨。
-
我没有看到泄漏,但没有任何其他上下文的快照不会显示任何内容。无法告诉您在应用程序的哪个位置保留了第二张屏幕截图中仍然存在的 237 个实例。
标签: ios objective-c memory-leaks profiler