博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS应用程序出现Crash(闪退)
阅读量:5036 次
发布时间:2019-06-12

本文共 580 字,大约阅读时间需要 1 分钟。

iOS应用程序出现Crash(闪退),90%以上的原因是内存问题。在一个拥有数十个甚至是上百个类的工程里,查找内存问题极其困难。了解内存常见问题,能帮我们减少出错几率。内存问题体现在三个方面:内存溢出、野指针异常,内存过渡释放。 在面试过程中,面试官也经常会问到关于内存方面的问题,在这里,我和大家分享两个简单地面试题。

其中largeNumber是一个很大的数,这道题有内存问题么?如果有请在不修改已经写好代码的情况下解决内存问题。

我们都知道,内存管理的原则:如果对一个对象使用了alloc、copy、retain,那么你必须使用相应的release或者autorelease。

咋一看,这道题目有alloc,也有autorelease,两者对应起来了,没问题。但是我们来仔细推敲一下,autorelease虽然会使引用计数减一,但是它并不是立即减一,它的本质功能只是把对象放在离他最近的自动释放池中,当自动释放池销毁了,才会向自动释放池中的每一个对象发送release消息。那么,这道题的问题就在autorelease这里。因为largeNUmber是一个很大的数,autorelease又不能使引用计数立即减一,所以在循环结束前会造成内存溢出的问题。

转载于:https://www.cnblogs.com/openeim/p/3919340.html

你可能感兴趣的文章
css选择器
查看>>
photoplus
查看>>
Python 拓展之推导式
查看>>
[Leetcode] DP-- 474. Ones and Zeroes
查看>>
80X86寄存器详解<转载>
查看>>
c# aop讲解
查看>>
iterable与iterator
查看>>
返回顶部(动画)
查看>>
webpack+react+antd 单页面应用实例
查看>>
Confluence 6 SQL Server 数据库驱动修改
查看>>
Confluence 6 通过 SSL 或 HTTPS 运行 - 备注和问题解决
查看>>
【47.76%】【Round #380B】Spotlights
查看>>
Git(使用码云)
查看>>
分享Java web 开发必游之路
查看>>
IIS初始化(预加载),解决第一次访问慢,程序池被回收问题(转载)
查看>>
Bean的Scope
查看>>
【BZOJ】3142: [Hnoi2013]数列
查看>>
http初探
查看>>
elasticsearch的安装
查看>>
__next__()
查看>>