• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

iphone - 内存警告后的 EXC_BAD_ACCESS

[复制链接]
菜鸟教程小白 发表于 2022-12-13 15:46:15 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

收到内存警告后,我的应用程序出现 EXC_BAD_ACCESS 问题。 这就是我测试的方式: 我写了一个简单的应用程序,它只分配内存但不释放它。在我分配了大量内存后,只剩下大约 14 MB 的可用内存,我切换到我的主应用程序。我立即在 didReceiveMemoryWarning 中收到内存警告。片刻之后,我的应用程序在一个在 UIButton 中设置图像的函数中崩溃:

-(void)activateRecordButton
{
    UIImage *image = [UIImage imageNamed"audioRecordOn"];
    [recButton setImage:image forState:UIControlStateNormal];
}

我得到的错误是调用 setImage 的行上的 EXC_BAD_ACCESS(code=1, address=some_address)。 如果我评论这些行,我的应用程序会在另一个为 UIButton 设置图像的函数中崩溃。

这是我的 didReceiveMemoryWarning:

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

为什么会这样?这是因为没有更多的内存来加载图像,还是因为当其他应用分配了大量内存时,recButton 以某种方式被释放了?

我在 Iphone 4 ios 5.1.1 上运行



Best Answer-推荐答案


默认情况下,UIViewController 将在 didReceiveMemoryWarning 中释放其 View (如果可能)。如果您没有手动保留按钮,您的按钮也会被释放。

setImage 然后在不存在的对象上调用,这将触发 EXC_BAD_ACCESS

关于iphone - 内存警告后的 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12130710/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap