【问题标题】:Memory leak by calling initWithTimeInterval:sinceDate of iOS on ARC在 ARC 上调用 iOS 的 initWithTimeInterval:sinceDate 导致内存泄漏
【发布时间】:2013-02-28 09:00:06
【问题描述】:

当我打电话给initWithTimeInterval:sinceDate:

NSDate * newDate = [date initWithTimeInterval:-7*24*60*60 sinceDate:date];

我遇到了内存泄漏。当我修复它时:

NSDate * newDate = [[NSDate alloc] initWithTimeInterval:-7*24*60*60 sinceDate:date];

我认为没有发生内存泄漏。我的问题是为什么前面的描述会导致内存泄漏。它有很强的参考价值吗?还是更改引用计数?

【问题讨论】:

  • 有趣的问题 - 我编辑了你的帖子,希望它更清楚。如果我有什么问题,请告诉我。
  • 谢谢,这就是我想说的。现在我正在使用 Instruments 检查内存泄漏。看起来存在额外的保留事件。

标签: ios automatic-ref-counting nsdate


【解决方案1】:

您能显示更多代码吗?你如何在第一个例子中初始化日期? initWithTimeInterval:sinceDate: 是一个构造函数,所以如果你已经初始化了数据,你不能再为这个变量调用任何init... 方法。

【讨论】:

  • 感谢您的评论。该代码只是示例,但我认为date 是由init... 之类的东西初始化的。所以你认为我应该使用dateWithTimeInterval:sinceDate: 而不是initWithTimeInterval:sinceDate:
  • @chabashilah,你一定要用dateWithTimeInterval:sinceData:
  • @chabashilah,还有一件事:你也可以使用NSDate * newDate = [[NSDate alloc] initWithTimeInterval:-7*24*60*60 sinceDate:date]; 规则:不要调用构造函数init... 方法两次!
猜你喜欢
  • 1970-01-01
  • 2016-02-04
  • 2017-10-03
  • 2013-08-19
  • 1970-01-01
  • 1970-01-01
  • 2013-01-15
  • 1970-01-01
  • 2013-03-19
相关资源
最近更新 更多