1、 簡述OC中內存管理機制。與retain配對使用的方法是dealloc還是release,爲什麼?需要與alloc配對使用的方法是dealloc還是release,爲什麼?readwrite,readonly,assign,retain,copy,nonatomic 、atomic、strong、weak屬性的作用?
答:retain 對應release ,retain+1,release -1 alloc 對應dealloc alloc是開闢內存空間dealloc銷燬空間
readwrite,生成set,get
readonly, 生成get
assign,set 內部直接賦值
retain,先做release ,在retain
copy,複製遵守特許協議的對象
nonatomic:非原子性(不會在多線程保證安全)
atomic、原子性(保證)
strong:ARC下使用,arc 強引用和非ARC下retain 相似
weak: ARC下使用,和非ARC下assign 相似,當系統釋放後會指向nil
2、 類變量的@protected,@private,@public,@package,聲明各有什麼含義?
@protected:本類以及子內都可以訪問,系統默認
@private:只有本類可以訪問
@public,:公共的,都可以訪問
@package(框架內訪問)
(能不能用箭頭訪問)
3、 線程是什麼?進程是什麼?二者有什麼區別和聯繫?
進程間是獨立,這表現在內容空間,上下文,線程的運行環境
一般來說進程是無法突破程序邊界,取其他進程的存儲空間,而線程處於進程空間內,所以所產生的線程共享同一內存空間
同一進程代碼不同同時進行,除非引入線程.線程屬於進程,金城推出時所產生線程強制退出並清除,線程佔用資源少於進程,在線程中,進程也是一個線程,尅也理解程序第一個線程
一個程序只有一個進程,當可以有多個線程
4、 談談你對多線程開發的理解?ios中有幾種實現多線程的方法?
多線程就是可以讓一個程序同時執行多個線程,來提高程序的執行效率
實現方法:
1.Thread
3.Cocoa operations;
2.GCD
4.poxs
5、 線程同步和異步的區別?IOS中如何實現多線程的同步?
(異步:併發,同步:串行,,可以使用主隊列,queue線程最大數量設爲1)區別:同步就是當程序的線程還沒有結束時,不可以執行別的操作,可能會卡死程序界面,異步,程序在執行時,不需要等執行結束,可以執行別的操作,相當於開了一個線程.
7、 獲取一臺設備唯一標識的方法有哪些?
1.uuid
2.udid
3.open udid
4.廣告標識
5.vindor
6.mac adderss
token boudle id
8、 ios類是否可以多繼承?如果沒有,那可以用其他方法實現嗎?簡述實現過程。
Ios 不可以多繼承.可以用代理
9、 堆和棧的區別?
棧:在系統中,一般系統管理的對象都在棧中,我們不需要去管理,但不需要的時候,系統會自動釋放堆中的對象,一般出了方法體這個對象就釋放了.
堆:我們手動開闢的空間一般在堆中開闢,堆中開闢空間在ARC情況下,系統會延遲釋放(autorelease),非ARC情況下需要我們手動管理.
10、 ios本地數據存儲都有哪幾種方式?
1,UserDefault
2.codeDate
4.nskeyArchive
3.write寫入
5.plist
6.歸檔反歸檔