* 1.OC有多繼承嗎仓蛆?沒有的話用什么代替睁冬?
OC中沒有多繼承,可以用委托代理Protocol來實(shí)現(xiàn)看疙。
* 2.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。
* 3.Object C中創(chuàng)建線程的方法是什么?如果在主線程中執(zhí)行代碼拓巧,方法是什么?如果想延時(shí)執(zhí)行代碼斯碌、方法又是什么?
線程創(chuàng)建有三種方法:使用NSThread創(chuàng)建、使用GCD的dispatch肛度、使用子類化的NSOperation,然后將其加入NSOperationQueue;在主線程執(zhí)行代碼,方法是performSelectorOnMainThread投慈,如果想延時(shí)執(zhí)行代碼可以用performSelector:onThread:withObject:waitUntilDone:承耿;
* 4.淺復(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ù)制好比你和你的克隆人,你完蛋咏瑟,你的克隆人還活著拂到。