【问题标题】:Re-assigning objects causes memory leak?重新分配对象会导致内存泄漏?
【发布时间】:2014-08-28 08:11:49
【问题描述】:

我正在慢慢学习 Obj-C,所以如果这是一个菜鸟问题,我很抱歉。

在我的应用程序中,我有一个名为 Object 的类,它只包含一堆变量。

Object *object = [[Object alloc] init];

我在我的程序中的一个静态单例对象中创建了这个类的一个实例。但是我注意到,每当我创建它的新实例(我有一个调用resetObject 方法的按钮)时,我的内存使用量都会增加。

// DataBank.h
 Object *object;

// DataBank.m
- (void)resetObject {
   object = [[Object alloc] init];
  }

我猜这可能是由于 Object 的旧实例没有被释放?我尝试解除分配它,但我得到一个错误,它不允许使用 ARC。有没有办法解决这个问题?

【问题讨论】:

  • no... 上面的代码没有泄漏。 (假设 Object [我们需要看到的] 本身很好)
  • 什么时候泄露了
  • 问题是,每当我调用[DataBank resetObject]时,我的内存使用量增加了1.5MB
  • 是的,所以使用仪器并找出泄漏的对象......(顺便说一句。建议:不要调用你的类 Object。它会令人困惑;))
  • 仪器?你是什​​么意思?是的,我不是哈哈。我只是在这里将它称为对象,这样我的解释就更清楚了:)

标签: ios objective-c memory-leaks


【解决方案1】:

您可以尝试如下修改您的代码吗?

// DataBank.m
- (void)resetObject {
   if (object)
   { [object release];}
   object = [[Object alloc] init];
}

【讨论】:

  • 他使用的是 ARC,所以不允许发布。
猜你喜欢
  • 2016-01-17
  • 2012-08-10
  • 1970-01-01
  • 2011-02-18
  • 2019-08-12
  • 2015-03-08
  • 2021-05-01
  • 2018-04-21
  • 1970-01-01
相关资源
最近更新 更多