IOS面试相关

2015-12-10  本文已影响94人  你瞅誰

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

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

  • ARC(自动引用计数,Automatic Reference Counting)、
  • MRC(手动内存计数,MannulReference Counting)、
  • autorelease(自动释放池)。

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

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

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

线程创建有三种方法:

  • 使用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引用的对象同样被修改,这其实违背了我们复制拷贝的一个思想。深复制就好理解了,内存中存在了两份独立对象本身。
  • 用通俗的话讲就是:浅复制好比你和你的影子,你完蛋,你的影子也完蛋;深复制好比你和你的克隆人,你完蛋,你的克隆人还活着。
  • 浅复制,引用文件的方法,不动引用文件的根数据,如果根数据删除,方法就无法使用
  • 深复制,同时引用根数据和方法,即使原根数据删除,方法还可以正常使用
上一篇 下一篇

猜你喜欢

热点阅读