问题标签 [didreceivememorywarning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1236 浏览

ios - 在 UINavigationController 的视图控制器堆栈中的某些视图控制器中未调用 didReceiveMemoryWarning

我用视图控制器A作为根视图控制器制作了UINavigationViewController,然后推送视图控制器B。当我在模拟器中模拟内存警告时,只调用了A的didReceiveMemoryWarning。当然,我在 A 和 B 中都覆盖了 didReceiveMemoryWarning。最终我通过在 A 的 didReceiveMemoryWarning 中调用 B 的 didReceiveMemoryWarning 来解决这个问题。但是我不知道为什么会自动调用 B 的方法。A 的 viewDidUnload 和 B 的 viewDidUnload 都按预期调用,因为我在从 B 呈现模态视图控制器时触发了警告。

如果视图控制器 B 是导航控制器的根,则调用它的 didReceiveMemoryWarning 没有问题。

0 投票
2 回答
461 浏览

ios - 内存问题 - 生活与整体 -> 应用程序被杀死

我正在尝试在 Instruments 中检查我的应用程序内存问题。当我加载应用程序时,我会播放一些声音并在 UIImageViews 中显示一些动画。为了节省一些内存,我只在需要时加载声音,当我停止播放时,我将它从内存中释放出来。

问题1:

我的应用程序使用了大约 5.5MB 的 Living 内存。但是整体部分在开始到 20MB 后开始增长,然后缓慢增长(大约 100kB/秒)。但是负责的库是 OpenAL (OAL::Buffer)、dyld (_dyld_start)——我不确定这到底是什么,还有一些其他的东西,比如 ft_mem_qrealloc、CGFontStrikeSetValue,……

问题2:

当整个部分超过 30MB 时,应用程序崩溃(被杀死)。根据我已经阅读的有关整体内存的事实,这意味着我的所有分配和释放大约是 30MB。但我真的看不出问题所在。例如,当我需要一些声音时,我将它加载到内存中,当我不再需要它时,我释放它。但这意味着当我加载 1MB 声音时,此操作会增加 2MB 的整体内存使用量。我对吗?当我加载 10 种声音时,我的应用程序崩溃只是因为我的总体水平太高,即使生活仍然很低???我对此感到非常困惑。

有人可以帮我清理一下吗?

(我在 iOS 5 上并使用 ARC)

一些代码:

创建声音 OpenAL:

播放:

使用 AVAudioPlayer 创建声音:

并停止并释放它:

和图像动画:我从大 PNG 文件加载图像(这也适用于我的另一个主题:https ://stackoverflow.com/questions/12223714/memory-warning-uiimageview-and-its-animations )我有几个 UIImageViews 和到时候我正在设置动画数组来播放动画......

我只是简单地使用这个数组:

0 投票
1 回答
552 浏览

ios - Memory Warning in Cocos2d due to images

I am loading a Cocos2d Scene that contains almost 700 png Images and even if I run this scene directly from Xcode I receive a Memory Warning message along with a long list of some of my Image names in the console..

I am properly deallocating them in dealloc but when I come again on this scene this time my game crashes during loading my half of the Images

Is this the problem of loading so much textures at once or problematic code?

How should I handle loading so many images and do proper memory management to avoid this crash?

0 投票
2 回答
735 浏览

iphone - 我应该在 viewDidUnload 中将哪些属性设置为 nil?

我不知道我是否正确使用了 viewDidUnload。我应该释放我在 .h 文件中声明的所有内容吗?

这是我现在的做法:

在 viewDidUnload 中:

这是正确的做法吗?

可能不会,因为我的应用程序在每次内存警告时都会崩溃。

谢谢!

0 投票
3 回答
14102 浏览

objective-c - iOS 6 弃用 viewWillUnload 并移至 didReceiveMemoryWarning

我是即将推出我的第一个应用程序的新开发人员。我对viewDidUnload以下 Apple 的 iOS 6 发行说明中所述的弃用感到困惑:

在 iOS 6 中,UIViewController 的 viewWillUnload 和 viewDidUnload 方法现已弃用。如果您使用这些方法来释放数据,请改用 didReceiveMemoryWarning 方法。如果不使用视图控制器的视图,您也可以使用此方法释放对视图控制器的视图的引用。在执行此操作之前,您需要测试视图是否不在窗口中。

为什么会这样?我应该遵循哪些准则来确保此更改不会导致我的应用出现任何性能问题?

谢谢。

0 投票
1 回答
12460 浏览

uiviewcontroller - 在内存警告(Apple doc 缺陷)中卸载 iOS 6 中的视图的正确方法是什么?

在 iOS 6 中,viewWillUnload并且viewDidUnload已弃用,并且 UIViewControllers 不再卸载在内存警告期间在屏幕上不可见的视图。View Controller Programming Guide有一个如何手动恢复此行为的示例。

这是代码示例:

代码示例下方是以下注释:

下次访问视图属性时,视图将完全按照第一次时的方式重新加载。

这里有一个明显的缺陷。如果尚未加载其视图的视图控制器收到内存警告,它将在行中加载其视图,if ([self.view window] == nil)然后继续清理并再次释放它。充其量,这是低效的。在最坏的情况下,如果加载了复杂的视图层次结构和支持数据,它会使内存条件变得更糟。我在 iOS 模拟器中验证了这种行为。

我当然可以对此进行编码,但对于 Apple 文档来说,出现这样的错误似乎很奇怪。我错过了什么吗?

0 投票
3 回答
4037 浏览

ios - 应该将 viewDidUnload 中的哪些工作移至 didReceiveMemoryWarning?

在新的 iOS 6 中,viewDidUnload已弃用,我们被指示使用它didReceiveMemoryWarning来管理 UIViewController 实例和子类中的对象。将 nils 分配给内部的 UIView 种类是否同样有效,didReceiveMemoryWarning就像它在内部完成的方式一样viewDidUnload

我问这个是因为这两种方法似乎工作方式不同。似乎didReceiveMemoryWarning不能保证viewDidLoad再次调用以重新实例化任何必要的 UIView。

我怀疑使用 iOS 6,无需手动释放 UIView 即可完成内存管理。请帮助我了解我在理解 UIViewController 的生命周期时遗漏了什么。

0 投票
3 回答
2575 浏览

ios - iOS - 未调用 viewDidUnload,但调用了 didReceiveMemoryWarning

试图找出某些设备崩溃的原因。我注意到我的视图控制器正在接收didReceiveMemoryWarning,但不是viewDidUnload。根据苹果的说法:

您不会使用 didReceiveMemoryWarning 来释放对视图对象的引用,您可能会使用它来释放您尚未在 viewDidUnload 方法中释放的任何与视图相关的数据结构。(视图对象本身应始终在 viewDidUnload 方法中释放。)

所以,

- 答:为什么viewDidUnload不叫?如果从不调用它,我无法在此处删除我的视图对象。

B:如果我不应该删除 中的视图对象didReceiveMemoryWarning,我还能在哪里执行此操作?

C: 使用 ARC,我还需要删除视图对象、将数组设置为 nil 等吗?

0 投票
2 回答
1918 浏览

ios - 当我在 iOS 中收到内存警告时,内存使用阈值是多少

我确实在我的 iOS 应用程序中收到了这些警告

问题是,在 Level=2 警告之后,我的应用程序将被杀死......在收到此类警告之前,我的应用程序可以使用多少 MB 内存?在我的应用程序因 2 级内存警告而被杀死之前,我在 XCode Instruments 中获得了 < 30Mb 的“实时字节”。这是我的阅读错误,还是我不打算在我的应用程序中使用超过 30Mb 的内存?

我正在使用 iPod Touch 4th Gen 和 iPhone 4 进行测试,并将这些设备作为最低目标。

任何建议表示赞赏,并提前感谢!

0 投票
3 回答
3243 浏览

iphone - 何时实际调用 didReceiveMemoryWarning

我以前从未亲眼见过didReceiveMemoryWarning电话。在调用它的地方是否存在已知的内存使用阈值?