OC有多繼承嗎?沒有的話用什么代替姑隅?
OC中沒有多繼承莱坎,可以用委托代理`Protocol`來實(shí)現(xiàn)。
Objective-C如何對(duì)內(nèi)存管理的?內(nèi)存管理的原則是糙箍?
- Objective-C的內(nèi)存管理主要有三種方式
ARC(自動(dòng)引用計(jì)數(shù))
渤愁、MRC(手動(dòng)內(nèi)存計(jì)數(shù))
、autorelease(自動(dòng)釋放池)
深夯。
每個(gè)對(duì)象都有一個(gè)引用計(jì)數(shù)器抖格,每個(gè)新對(duì)象的計(jì)數(shù)器是1,當(dāng)對(duì)象的計(jì)數(shù)器減為0時(shí)咕晋,就會(huì)被銷毀雹拄。
- 內(nèi)存管理原則(配對(duì)原則):只要出現(xiàn)了
new/alloc/retain
,就一定配對(duì)出現(xiàn)一個(gè)release/autorelease
。
Object C中創(chuàng)建線程的方法是什么?如果在主線程中執(zhí)行代碼掌呜,方法是什么?如果想延時(shí)執(zhí)行代碼滓玖、方法又是什么?
- 線程創(chuàng)建有三種方法:使用
NSThread
創(chuàng)建、使用GCD的dispatch
、使用子類化的NSOperation
,然后將其加入NSOperationQueue
;
在主線程執(zhí)行代碼,方法是performSelectorOnMainThread
求橄,如果想延時(shí)執(zhí)行代碼可以用
performSelector:onThread:withObject:waitUntilDone:传透;
淺復(fù)制和深復(fù)制的區(qū)別?
淺復(fù)制:只復(fù)制指向?qū)ο蟮闹羔槪粡?fù)制引用對(duì)象本身。
深復(fù)制:復(fù)制引用對(duì)象本身。
意思就是說我有個(gè)A對(duì)象,復(fù)制一份后得到A_copy對(duì)象后绷蹲,對(duì)于淺復(fù)制來說,A和A_copy指向的是同一個(gè)內(nèi)存資源顾孽,
復(fù)制的只不過是是一個(gè)指針祝钢,對(duì)象本身資源還是只有一份,那如果我們對(duì)A_copy執(zhí)行了修改操作,那么發(fā)現(xiàn)A引用的
對(duì)象同樣被修改若厚,這其實(shí)違背了我們復(fù)制拷貝的一個(gè)思想拦英。深復(fù)制就好理解了,內(nèi)存中存在了兩份獨(dú)立對(duì)象本身。
用通俗的話講就是:
淺復(fù)制好比你和你的影子测秸,你完蛋疤估,你的影子也完蛋灾常;
深復(fù)制好比你和你的克隆人,你完蛋铃拇,你的克隆人還活著钞瀑。
自己理解的:
就是在Xcode中引用別的工程的文件,而且沒有將工程的文件拷貝到工程的總文件
中慷荔,那么在原工程文件中將這個(gè)文件刪除雕什,那么在引用文件的工程中,就會(huì)顯示錯(cuò)誤显晶。所以這就是淺復(fù)制贷岸。
深復(fù)制同理。