【问题标题】:Memory Warning in Xcode - What does one do in didReceiveMemoryWarning?Xcode 中的内存警告 - 在 didReceiveMemoryWarning 中做了什么?
【发布时间】:2014-11-20 15:22:20
【问题描述】:

我之前也问过这个问题,但我认为我的问题没有被理解,所以又来了:

我们不再处理内存,因为 ARC 会这样做。我们甚至不能调用内存释放命令等。那么,如果代理收到内存警告通知,可以在运行时以编程方式解决内存警告问题吗?

我不想知道如何修复我的代码!!! 代码无法在运行时自行修复。

假设我编码正确,但仍然收到内存警告,可以做什么..

ie 你能举个例子说明什么是要编码到的

- (void)didReceiveMemoryWarning
{
     [super didReceiveMemoryWarning];
          // Release any cached data, images, etc that aren't in use.
     ;
}

方法?

【问题讨论】:

  • 通常你记录它并忽略它。 (但是当你收到警告时,你当然可以做一些事情来释放内存。)
  • 收到内存警告时,请尝试释放内存中当前未使用的对象,例如图像、内存缓存、不在 UI 上的视图控制器。您应该释放它们以降低内存压力并在需要时重新创建它们。
  • Hot Licks :我的问题是可以做什么? - 不,一个人可以做任何事吗?我正在努力找出究竟可以做什么。我需要看一些代码......就像贾斯汀这么好心提供的一样。
  • gagarwal - 如何释放内存中的对象?请提供一些代码。请记住,不能使用例如“释放”!如果有人使用 ARC。

标签: ios objective-c iphone xcode memory


【解决方案1】:

当然,您仍然可以控制内存。您只是在使用 ARC 在更高的抽象级别上进行操作。

您可以使用:object = nil 清除强引用。当所有强引用都被清除时,对象被释放。

如果您熟悉手动引用计数:

object = nil; << ARC

在自己做引用计数的时候是这样的:

[object release], object = nil;

【讨论】:

  • 谢谢贾斯汀!!我会试试这个。
【解决方案2】:

也许太天真了,但我所做的是记录变量的当前值,以便跟踪错误或可能导致警告的原因。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-03-29
  • 1970-01-01
  • 2015-04-04
  • 2017-08-23
  • 2020-03-03
  • 2013-03-28
  • 2012-11-22
  • 1970-01-01
相关资源
最近更新 更多