美文网首页
IOS面试相关

IOS面试相关

作者: 你瞅誰 | 来源:发表于2015-12-10 11:21 被阅读94次

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

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

  • 如果有多继承 “:副类,副类,”

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

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

每个对象都有一个引用计数器,每个新对象的计数器是1,当对象的计数器减为0时,就会被销毁。#内存管理原则(配对原则):只要出现了new/alloc/retain,就一定配对出现一个release/autorelease.

MRC(手动内存计数)-fobjc-arc

ARC(自动引用计数)-fno-objc-arc

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

线程创建有三种方法:

  • 使用NSThread创建、
  • 使用GCD的dispatch、
  • 使用子类化的NSOperation,

然后将其加入NSOperationQueue;在主线程执行代码,方法是:performSelectorOnMainThread,如果想延时执行代码可以用performSelector:onThread:withObject:waitUntilDone:

NSThread线程

NSOperation操作

dispatch._get_main_queue

浅复制和深复制的区别?

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

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

  • 意思就是说我有个A对象,复制一份后得到A_copy对象后,对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不过是是一个指针,对象本身资源还是只有一份,那如果我们对A_copy执行了修改操作,那么发现A引用的对象同样被修改,这其实违背了我们复制拷贝的一个思想。深复制就好理解了,内存中存在了两份独立对象本身。
  • 用通俗的话讲就是:浅复制好比你和你的影子,你完蛋,你的影子也完蛋;深复制好比你和你的克隆人,你完蛋,你的克隆人还活着。
  • 指针指向一个内存地址“ * ”代表指针,指向同一个地址
  • 浅复制,引用文件的方法,不动引用文件的根数据,如果根数据删除,方法就无法使用
  • 深复制,同时引用根数据和方法,即使原根数据删除,方法还可以正常使用

相关文章

网友评论

      本文标题:IOS面试相关

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