怎么保證線程安全济欢?
只在主線程刷新UI。
防止線程資源搶奪小渊,要用@synchronized進(jìn)行加鎖保護(hù)法褥。
異步操作保證線程安全,盡量使用GCD酬屉。
GCD內(nèi)部怎么實(shí)現(xiàn)的半等?
iOS和OSX的核心是XNU內(nèi)核揍愁,GCD是基于XNU內(nèi)核實(shí)現(xiàn)的。
GCD的API全部在libDispatch庫中
GCD的底層實(shí)現(xiàn)主要是dispatch queue和dispatch source
dispatch queue:管理block
dispatch source: 處理時(shí)間
NSOperationQueue和GCD的區(qū)別杀饵?
GCD是基于C語言的莽囤。而NSoperation是對GCD進(jìn)行了一層面向?qū)ο蟮姆庋b。
GCD隊(duì)列只支持FIFO原則切距。NSOperation則能很方便的調(diào)度線程順序朽缎,以及設(shè)置最大并發(fā)數(shù)。
NSOperation能很方便的設(shè)置線程間的依賴關(guān)系谜悟。GCD實(shí)現(xiàn)則較為復(fù)雜话肖。
GCD的執(zhí)行速度比NSOperation快。
NSOperation支持KVO赌躺,可以檢測Operation是否在執(zhí)行狼牺。
GCD適用于簡單程序。NSOperation適用于復(fù)雜程序礼患。
GCD適用時(shí)要注意什么是钥?
程序復(fù)雜度,任務(wù)依賴關(guān)系缅叠。
MRC下和ARC下悄泥,block的使用及注意?
block使用注意block的內(nèi)存管理肤粱,循環(huán)引用弹囚。很多時(shí)候,程序?yàn)榱吮WC它認(rèn)為的正常運(yùn)行领曼,會隱式持有對象鸥鹉。
MRC:使用——block
ARC:使用——weak\——unsafe——unretained。
如果圖片下載失斒尽毁渗?
重新下載圖片,利用Runloop的輸入源回到主線程刷新UIImageView单刁。
Socket的實(shí)現(xiàn)原理及Socket之間的通信灸异?
socket就是套接字,擁有一對套接字就可實(shí)現(xiàn)通訊羔飞。一個運(yùn)行在客戶端肺樟,稱為ClientSocket。另一個在服務(wù)器端逻淌,稱為ServerScocket么伯。一般的socket連接是TCP連接,當(dāng)然也可以是UDP連接卡儒。參考TCP連接蹦狂。
http協(xié)議的實(shí)現(xiàn)誓篱?
首先要了解,HTTP協(xié)議用于在Internet上發(fā)送和接收消息凯楔。HTTP協(xié)議是一種請求-應(yīng)答式的協(xié)議〗跄迹客戶端向服務(wù)器端發(fā)送一個HTTP請求包摆屯,服務(wù)器則向客戶端回復(fù)一個HTTP應(yīng)答包。
什么是TCP的三次握手糠亩?
TCP的三次握手虐骑,建立起客戶端與服務(wù)器端的聯(lián)系。
首先赎线,客戶端向服務(wù)器發(fā)送一個syn(syn = j)包廷没,并進(jìn)入SYN_SEND狀態(tài)。
服務(wù)器接收到客戶端的syn包垂寥,確認(rèn)用戶的syn包(ack = j +1)颠黎,同時(shí)自己也向客戶端發(fā)送一個syn(syn = k),即SYN+ACK包滞项,此時(shí)服務(wù)器進(jìn)入SYN——RECV狀態(tài)狭归。
客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK文判」担客戶端與服務(wù)器端進(jìn)入ESTABLLSHED狀態(tài),完成三次握手戏仓。
HTTP的組成?
請求行疚宇,消息報(bào)頭,請求正文赏殃。
支持服務(wù)器/客戶端模式
簡單快速:客戶只需要向服務(wù)器只需要發(fā)送請求方法和路徑敷待。HTTP協(xié)議簡單。
支持任意類型的數(shù)據(jù)對象嗓奢。
無連接:限制每次只處理一個連接讼撒。
無狀態(tài):沒有記憶能力。(需要登陸的網(wǎng)址股耽,復(fù)制到另一個瀏覽器根盒。需要重新輸入登陸密碼)