• 面试题总结


    1、objc中向一个nil对象发送消息将会发生什么

    2、autrelease什么时候会被释放?

    《Objective-C基础教程》上说:自动释放(autorelease)是一种延迟释放机制,这样保证局部堆上的变量能够被外部正常使用。

    但是,系统又是什么时候释放的呢?在每一个事件周期(event cycle)的开始,系统会自动创建一个自动释放池;

    在每一个事件周期的结尾,系统会自动销毁这个自动释放池。一般情况下,你可以理解为:当你的代码在持续运行时,自动释放池是不会被销毁的,这段时间内你也可以安全地使用自动释放的对象;当你的代码运行告一段落,开始等待用户输入(或者其它事件)时,自动释放池就会被释放掉,池中的对象都会收到一个release消息,有的可能会因此被销毁。

    这是很难确定的时间,如果自动释放池的销毁时间过早,那么程序就很危险,这个恐怕很难满足程序员的要求吧。

    自动释放池的缺点:它延缓了对象的释放,在有大量自动释放的对象时,会占用大量内存资源。因此,你需要避免将大量对象自动释放。并且,在以下两种情况下,你需要手动建立并手动销毁掉自动释放池:

    1.当你在主线程外开启其它线程时:系统只会在主线程中自动生成并销毁掉自动释放池。

    2.当你在短时间内制造了大量自动释放对象时:及时地销毁有助于有效利用iPad上有限地内存资源。

    3、NSTimer计时器为什么要在dolloc方法中释放?

  • 相关阅读:
    前端 CSS 与HTML 学习笔记详细讲解
    Python-Django之DRF
    Flask
    flask
    Python
    Python爬虫
    前端开发规范
    为什么 [] == ![] 输出是true?
    javascript准确判断各种数据类型
    JavaScript数组扁平化常用方法总结
  • 原文地址:https://www.cnblogs.com/dannygao/p/6959549.html
Copyright © 2020-2023  润新知