iOS面试题2

作者: SmallHer | 来源:发表于2018-01-15 13:48 被阅读439次

    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

        本文链接:https://www.haomeiwen.com/subject/qforoxtx.html