@class的作用:在頭文件當中,一般只需要知道被引用的類的名稱即可,不需要知道其內部的實體變量和方法,所以在頭文件中一般使用@class來聲明這個名稱是類的名稱,而在實現類的里面,因為會用到這個引用類的內部的實體變量和方法,所以需要使用#import來包含這個被引用類的頭文件。(1)@class是告訴編譯器,有這么一個類。(2)還可以解決循環依賴的問題。
OC不可以多繼承,但是可以實現多接口,通過實現多個接口可以完成C++的多重載。
OC創建線程的方法:創建線程有三種方法:使用NSTread創建,使用GCD的dispatch、使用子類化的NSOperation,然后將其加入到NSOperationQueue;在主線程執行代碼的方法是:performSelectorOnMainThread,如果想要延時執行代碼可以使用performSelector;onThread;onThread;withObject;waitUntilDone。
面向連接,面向無連接:面向連接是指通信雙方在通信時,事先先接力一條通信線路,其中有三個過程:建立連接,使用連接和釋放連接,比如電話系統就是一個面向連接的模式,TCP協議就是一種面向連接的協議。面向無連接是指通信雙方不需要事先建立一條通信線路,而是把每個帶有目的的地址包(報文組)發送到線路上,有系統自主選定線路進行傳輸。比如郵政系統就是一種面向無連接的方式,UDP協議就是一種無連接的協議。
iOS中的幾種回調機制:1.目標動作對:當兩個對象之間有比較緊密的關系時,如視圖控制器與其下的某個視圖。2.代理,代理又叫委托,當某個對象收到多個事件,并要求同一個對象來處理所有的事件時。委托機制依賴于某個協議定義的方法來進行發送消息。3.通告機制:當需要多個對象或者兩個無關對象處理同一個事件時。4.Block,適用于回調只發生一次的簡單任務
自動釋放池,工作原理:當我們向對象發送一個autorelease消息時,Cocoa會將該對象的一個引用放到最新的自動釋放池,它仍然是個正當的對象,因此自動釋放池定義的作用域內的其他對象都可以向他發送消息。當程序執行到作用域結束的位置時,自動釋放池就會釋放,池中的所有對象也會被釋放。
http連接和socket連接:http連接就是所謂的短連接,是客戶端用http協議進行請求,客戶端向服務端發送一次請求,服務器端響應后連接即會斷掉,以節省資源。服務器不能主動給客戶端響應。
Socket連接:socket連接是所謂的長連接,是客戶端跟服務器直接使用socket“套接字”進行連接,并沒有規定連接后斷開,所以客戶端和服務器可以保持連接通道,雙方都可以主動發送數據。一般多用于游戲開發或股票開發這個要求即時性很強并且發送數據量比較大的從場合使用。主要用的類是CFSocketRef.
TCP連接的三次握手:1.客戶端發送syn包到服務器,并進入到syn_send狀態,等待服務器確認。2.服務器收到syn包,必須確認客戶的syn,同時自己也發送一個syn包,即syn+ack包,此時服務器進入syn+recv狀態。3.客戶端收到服務器的syn+ack包,向服務器發送確認包ack,此時發送完畢,客戶端和服務器進入到established狀態,完成三次握手。