iOS面试题2

1.Objective-C如何对内存管理的,说说你的看法和解决方法?

每个对象都有一个引用计数器,每个新对象的计数器是1,当对象的计数器减为0时,就会被销毁通过retain可以让对象的计数器+1、release可以让对象的计数器-1还可以通过autorelease pool管理内存如果用ARC,编译器会自动生成管理内存的代码

2.内存管理的几条原则时什么?按照默认法则.哪些方法生成的对象需要手动释放?在和property结合的时候怎样有效的避免内存泄露? 

只要调用了alloc、copy、new方法产生了一个新对象,都必须在最后调用一次release或者autorelease 

只要调用了retain,都必须在最后调用一次release或者autorelease 

@property如果用了copy或者retian,就需要对不再使用的属性做一次release操作 

如果用了ARC,另外讨论

3.What is Singleton? (单例是什么)

单例:保证程序运行过程中,永远只有一个对象实例 

目的是:全局共享一份资源、节省不必要的内存开销

4。对象是什么时候被释放的? 

每个对象都有一个引用计数器,每个新对象的计数器是1,当对象的计数器减为0时,就会被销毁     

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

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

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

iOS 面试题1

iOS 面试题3

iOS 面试题4

iOS 面试题5

iOS 面试题6

你可能感兴趣的:(iOS面试题2)