ios内存管理

转载 2015年07月06日 22:16:32

1.   怎么保证多人开发进行内存泄露的检查.

1> 使用Analyze进行代码的静态分析

2> 为避免不必要的麻烦, 多人开发时尽量使用ARC

 

2.非自动内存管理情况下怎么做单例模式.

创建单例设计模式的基本步骤 ·

>声明一个单件对象的静态实例,并初始化为nil。

>创建一个类的类工厂方法,当且仅当这个类的实例为nil时生成一个该类的实例

>实现NScopying协议, 覆盖allocWithZone:方法,确保用户在直接分配和初始化对象时,不会产 生另一个对象。

>覆盖release、autorelease、retain、retainCount方法, 以此确保单例的状态。

>在多线程的环境中,注意使用@synchronized关键字或GCD,确保静态实例被正确的创建和初始化。

 

3.对于类方法(静态方法)默认是autorelease的。所有类方法都会这样吗?

1> 系统自带的绝大数类方法返回的对象,都是经过autorelease的

 

4blockARC中和MRC中的用法有什么区别,需要注意什么

1.对于没有引用外部变量的Block,无论在ARC还是非ARC下,类型都是__NSGlobalBlock__,这种类型的block可以理解成一种全局的block,不需要考虑作用域问题。同时,对他进行Copy或者Retain操作也是无效的

 

2.应注意避免循环引用

 

5什么情况下会发生内存泄漏和内存溢出?

当程序在申请内存后,无法释放已申请的内存空间(例如一个对象或者变量使用完成后没有释放,这个对象一直占用着内存),一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。内存泄露会最终会导致内存溢出!

当程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个int,但给它存了long才能存下的数,那就是内存溢出。

 

6[NSArray arrayWithobject:<id>] 这个方法添加对象后,需要对这个数组做释放操作吗?

     不需要 这个对象被放到自动释放池中

 

7Json数据的解析,和解析数据的时候有内存泄露吗?有的话如何解      

1>JSON解析的方案

l SBJson

l JSONkit

l NSJSONSerialization

 

2>内存泄漏么?

 

8. 自动释放池底层怎么实现

自动释放池以栈的形式实现:当你创建一个新的自动释放池时,它将被添加到栈顶。当一个对象收到发送autorelease消息时,它被添加到当前线程的处于栈顶的自动释放池中,当自动释放池被回收时,它们从栈中被删除, 并且会给池子里面所有的对象都会做一次release操作.

iOS 内存管理基本原则

我们知道objc中创建对象是存放在堆中的(基本数据类型除外,是由系统自己管理,并存放在栈中),系统不会自动释放堆中的内存。如果创建完的对象存放在堆中后并使用完没有得到及时的释放,会占用的内存。但是ob...
  • aaaa99996666
  • aaaa99996666
  • 2016年05月07日 19:33
  • 1723

iOS内存管理:基本概念与原理

在Objective-C的内存管理中,其实就是引用计数(reference count)的管理。内存管理就是在程序需要时程序员分配一段内存空间,而当使用完之后将它释放。如果程序员对内存资源使用不当,有...
  • shaobo8910
  • shaobo8910
  • 2017年02月13日 19:09
  • 2184

iOS内存管理高级指南(官方文档——译文)

iOS内存管理高级指南     应用程序内存管理是:“程序运行时,开辟的内存空间。使用它,释放它”的过程,写的好的程序尽可能少使用内存。在Objective-C中,内存管理被看做是:“在很多数据、代码...
  • hherima
  • hherima
  • 2013年11月16日 12:40
  • 2231

ios经典面试题总结--内存管理

最近开始参加一些iOS移动端开发的面试,虽然参加的面试不多。但面试官问的问题大致差不多,我根据自己的情况做了一下总结,答案是我看官方文档还有相关资料总结的,如有答的不好的地方,希望批评指正以及交流,谢...
  • jasonjwl
  • jasonjwl
  • 2015年12月03日 22:23
  • 3178

iOS面试知识点之内存管理

由于近期要准备面试,所以把知识点总结下 1.ARC与MRC的区别 MRC是引用计数机制用来管理内存。当oc对象发生一次alloc/retain/copy的时候,retainCount+1。当oc对...
  • a421101046
  • a421101046
  • 2016年04月10日 10:07
  • 379

OC内存管理常见面试题整理

1:简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与alloc配对使用的方法是dealloc还是release,为什么?readwrite,rea...
  • wks_lovewei
  • wks_lovewei
  • 2016年03月31日 19:06
  • 832

Swift内存管理(ARC)

原文出自:Swift ARC总结 引言Swift使用自动引用计数(ARC)机制来处理内存。通常情况下,Swift内存管理机制会自动管理内存,无须我们考虑内存的管理。ARC会在类的实例不再被使用(也就是...
  • woaifen3344
  • woaifen3344
  • 2015年10月18日 12:05
  • 1014

[读书笔记]iOS与OS X多线程和内存管理 [GCD部分]

3.2 GCD的API 苹果对GCD的说明:开发者要做的只是定义想执行的任务并追加到适当的Dispatch Queue中。 “Dispatch Queue”是执行处理的等待队列。通过dis...
  • zyb050607
  • zyb050607
  • 2015年03月13日 10:15
  • 1316

《Objective-C高级编程:iOS与OS X多线程和内存管理》读后感

显然,这不是一本面向初学者的书,
  • zhangao0086
  • zhangao0086
  • 2014年08月30日 12:10
  • 8970

iOS内存管理---block机制详解

初学者对于block机制一时很难理解。我刚开始学习的时候也是跟着敲代码,并不能说立马理解了其中的道理。今天,我想从2个层次、5个点去相对详细的讲解一下OC中的block机制。 第一层:理解bl...
  • u012526801
  • u012526801
  • 2015年10月20日 19:59
  • 1135
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ios内存管理
举报原因:
原因补充:

(最多只允许输入30个字)