【问题标题】:Xcode/Instruments/Leaks: can it show a red line where apparently there is no leak?Xcode/Instruments/Leaks:它可以在明显没有泄漏的地方显示一条红线吗?
【发布时间】: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 作为参数传递给任何函数或消息?
  • 不,但是在查看代码以确保时,我发现了故障。请参阅下面的答案。谢谢!

标签: iphone ios xcode-instruments


【解决方案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 方法。

    【讨论】:

      猜你喜欢
      • 2016-01-10
      • 2011-10-10
      • 1970-01-01
      • 2011-12-27
      • 2019-10-20
      • 2023-04-10
      • 2013-01-26
      • 2011-06-08
      • 2010-10-18
      相关资源
      最近更新 更多