Xcode/Instruments/Leaks:它可以在明显没有泄漏的地方显示一条红线吗?

Posted

技术标签:

【中文标题】Xcode/Instruments/Leaks:它可以在明显没有泄漏的地方显示一条红线吗?【英文标题】:Xcode/Instruments/Leaks: can it show a red line where apparently there is no leak? 【发布时间】:2012-02-21 02:35:01 【问题描述】:

程序所做的只是分配一个对象然后释放它。

我是 Instruments 的新手,所以我不确定自己是否正确:

红线表明我分配该对象的位置存在泄漏。但是在细节上你可以看到它被释放了,引用计数又回到了 0。那么为什么首先会有一条红线,它到底告诉我什么?

编辑:这是检测到的“泄漏”。我的 UIViewController 中的代码:

- (void)viewDidLoad

    [super viewDidLoad];

    Plant *plant = [[Plant alloc] initWithWeight:3 withSpecies:@"carrot"];

    [plant release];

【问题讨论】:

能否也添加程序的源代码? 那里。我认为没有必要发布 Plant 的来源,因为这里报告了泄漏。 initWithWeight:withSpecies: 是否在任何地方存储 self?它会创建任何块吗?它是否将self 作为参数传递给任何函数或消息? 不,但是在查看代码以确保时,我发现了故障。请参阅下面的答案。谢谢! 【参考方案1】:

如果你有一个 Plant 类型的 @property。

那么这个泄漏可以用

来解释
self.plant = someobject  //some object retained. /(using setter)

plant = someother object // previous value in self.plant leaked

-(void) dealloc

[plant release];
[super dealloc];

【讨论】:

【参考方案2】:

我找到了。

该类有一个最后没有调用 [super dealloc] 的 dealloc 方法。

【讨论】:

以上是关于Xcode/Instruments/Leaks:它可以在明显没有泄漏的地方显示一条红线吗?的主要内容,如果未能解决你的问题,请参考以下文章

VS 19 - 当我初始化一个变量时,它突然“重新格式化”它,我该如何关闭它?

MATLAB。写入文本文件或创建它,如果它不存在。将图形保存在目录中,如果不存在则创建它

ggplot 如果它在 for 循环内则不起作用,尽管它在它之外工作 [重复]

python nonlocal - 为啥有时需要它,有时不需要它

如何继续检查文件直到它存在,然后提供指向它的链接

派生类是不是为继承的变量分配内存,或者它只是访问它?