zoukankan      html  css  js  c++  java
  • 面试题总结

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    python编写弹球游戏的实现代码
    Linux kernal
    ccc
    Ubuntu14.04 支持 exFat 格式操作
    Ubuntu 14.04 tar 打包系统安装到新机器
    Ubuntu14.04 dd命令克隆系统镜像安装到另一台机器上
    gzip 的使用
    gzip: stdin: unexpected end of file tar: Unexpected EOF in archive
    c++ 实现等待5s
    Ubuntu14.04 系统复制迁移到新的机器上
  • 原文地址:https://www.cnblogs.com/dannygao/p/6959549.html
Copyright © 2011-2022 走看看