面试题

作者: 必须这么打 | 来源:发表于2015-12-10 08:13 被阅读0次

    ---

    #####更多

    * 9.OC有多继承吗?没有的话用什么代替?

    OC中没有多继承,可以用委托代理Protocol来实现。

    * 10.Objective-C如何对内存管理的?内存管理的原则是?

    Objective-C的内存管理主要有三种方式ARC(自动引用计数)、MRC(手动内存计数)、autorelease(自动释放池)。

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

    内存管理原则(配对原则):只要出现了 new/alloc/retain,就一定配对出现一个release/autorelease。

    * 11、Object C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么?

    线程创建有三种方法:使用NSThread创建、使用GCD的dispatch、使用子类化的NSOperation,然后将其加入NSOperationQueue;在主线程执行代码,方法是performSelectorOnMainThread,如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone:;

    * 12、浅复制和深复制的区别?

    浅复制:只复制指向对象的指针,而不复制引用对象本身。

    深复制:复制引用对象本身。

    意思就是说我有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源还是只有一份,那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改,这其实违背了我们复制拷贝的一个思想。深复制就好理解了,内存中存在了两份独立对象本身。

    用通俗的话讲就是:浅复制好比你和你的影子,你完蛋,你的影子也完蛋;深复制好比你和你的克隆人,你完蛋,你的克隆人还活着。

    相关文章

      网友评论

          本文标题:面试题

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