gpt4 book ai didi

ios - 接收内存警告和内存泄漏

转载 作者:行者123 更新时间:2023-11-28 19:17:12 24 4
gpt4 key购买 nike

我正在使用 ARC(自动引用计数)。

如果我在 viewDidDisappear 而不是 viewDidUnload 中将 IBOutlets 设置为 nil 可以吗?

比如这些:

[self setTheImage:nil];
[self setBTNplay:nil];
[self setBTNstop:nil];

我正在编写一个基于导航的应用程序,其中包括 pageViewController,我在 Instruments 中测试了我的应用程序以查看内存泄漏,并且我不断收到收到内存警告消息。我什至在 viewDidUnload 方法中放置了一个日志代码。但是当我弹出 rootViewController 时,它似乎并没有被调用!

还有一件事:如果每个页面都有一个 audioPlayer,我应该在哪里设置一个 @property (nonatomic, strong) AVAudioPlayer *audioPlayer; 为 nil?

或者我如何将它设置为弱而不是强?因为它在这段代码行中给了我一个“警告”:

_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:poemURL error:nil];

它说:将保留的对象分配给弱变量

最佳答案

您不需要在 viewDidUnload 中清零这些值。确保您使用的是弱属性而不是强属性,或者为 IBOutlet 分配。收到内存警告并不一定意味着您正在泄漏。收到内存警告意味着您的应用消耗了太多内存。运行 Instruments 并使用您的应用使用多少内存来编辑您的问题。

您正在使用 AVAudioPlayer 的事实让我觉得您可能正在将一些大量的音频文件拉入内存。

另外,initWithContentsOfURL:error: 会让您被 App Store 拒绝,因为您阻塞了主线程。尝试在仅启用蜂窝网络的 iPhone 上测试您的应用程序,然后进入您办公室/家中互联网连接不良的部分。也可以尝试将手机切换到飞行模式。毫无疑问,您的应用程序要么在连接失败之前卡住很长时间,要么就会崩溃。

相反,您应该使用 grand central dispatch 或通过 NSURLConnection 的 block 或委托(delegate)方法下载它。

关于ios - 接收内存警告和内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11333103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com