OC有多繼承嗎?沒有的話用什么代替?
OC中沒有多繼承,可以用委托代理`Protocol`來實現。
Objective-C如何對內存管理的?內存管理的原則是?
- Objective-C的內存管理主要有三種方式
ARC(自動引用計數)
、MRC(手動內存計數)
、autorelease(自動釋放池)
。
每個對象都有一個引用計數器,每個新對象的計數器是1,當對象的計數器減為0時,就會被銷毀。
- 內存管理原則(配對原則):只要出現了
new/alloc/retain
,就一定配對出現一個release/autorelease
。
Object C中創建線程的方法是什么?如果在主線程中執行代碼,方法是什么?如果想延時執行代碼、方法又是什么?
- 線程創建有三種方法:使用
NSThread
創建、使用GCD的dispatch
、使用子類化的NSOperation
,然后將其加入NSOperationQueue
;
在主線程執行代碼,方法是performSelectorOnMainThread
,如果想延時執行代碼可以用
performSelector:onThread:withObject:waitUntilDone:;
淺復制和深復制的區別?
淺復制:只復制指向對象的指針,而不復制引用對象本身。
深復制:復制引用對象本身。
意思就是說我有個A對象,復制一份后得到A_copy對象后,對于淺復制來說,A和A_copy指向的是同一個內存資源,
復制的只不過是是一個指針,對象本身資源還是只有一份,那如果我們對A_copy執行了修改操作,那么發現A引用的
對象同樣被修改,這其實違背了我們復制拷貝的一個思想。深復制就好理解了,內存中存在了兩份獨立對象本身。
用通俗的話講就是:
淺復制好比你和你的影子,你完蛋,你的影子也完蛋;
深復制好比你和你的克隆人,你完蛋,你的克隆人還活著。
自己理解的:
就是在Xcode中引用別的工程的文件,而且沒有將工程的文件拷貝到工程的總文件
中,那么在原工程文件中將這個文件刪除,那么在引用文件的工程中,就會顯示錯誤。所以這就是淺復制。
深復制同理。