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