IOS雜談

三次握手

第一次

第一次握手:建立連接時
三次握手

三次握手

客戶端發送syn包(syn=j)到服務器,並進入SYN_SENT狀態,等待服務器確認

第二次

第二次握手服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;

第三次

第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。
完成三次握手,客戶端與服務器開始傳送數據

交換機和路由器的區別是什麼?

路由器是通過IP尋址,交換機是通過Mac尋址。路由器支持NAT
三層交換機既支持NAT也支持IP尋址

HTTP:超文本傳輸協議(Hypertext Transfer Protocol)。

l          基於應用層的協議,在上網瀏覽網頁的時候,瀏覽器和web

服務器之間通過HTTPInternet上進行數據的發送和接收。

l          基於請求/響應模式的、無狀態的協議


瀏覽器與服務器通信過程:

1 客戶發起連接

2 客戶發送請求

3 服務器響應請求

4 服務器關閉連接


ios7和ios6有什麼區別

1.主屏幕,IOS7比IOS6的屏幕更加明亮,多一個桌面啓動器,單個圖標的像素更大了,最下層採用“磨砂板”設計
2.顏色和邊界,IOS捨棄了邊界,依靠色彩還體現交互
3.扁平化 
4.明亮度  IOS7 比6更加明亮,界面也看起來更開闊,整體的界面風格也更加均勻
從本質上來說,iOS 7捨棄了人工製品的花哨,迴歸到了設計的本質,致力於追求簡單,達到直擊內容的目的。

NSString與NSMutableString的區別

當你使用不可變的NSString class時,替換舊的字符串的唯一方式就是創建一個新的字符串然後更新你的變量“str2”

來指向這個新的字符串。這個操作不會影響“str1”所指向的內容,因此它將繼續指向初始的字符串。

 

在NSMutableString的例子裏,我們沒有創建第二個字符串,而是通過改變已經存在的可變字符串“str2”的內容來代替。

由於str1和str2兩個變量都仍然指向同一個字符串對象,從nslog中可以看到它們值都將會被更新。

 

理解指針變量和它實際指向對象的不同是非常重要的。一個NSString對象是不可變的,但是這並不阻止你改變指向這個不

可變對象的指針的值。

 

"NSString *"這個數據類型代表一個NSString對象的指針,不是NSString對象本身。

"NSMutableString *"這個數據類型則是代表"NSMutableString"對象本身,這兩者是有區別的。


MVC是什麼?有什麼特性?爲什麼在iPhone上被廣泛運用?

MVC設計模式考慮三種對象:模型對象、視圖對象、和控制器對象。模型對象代表 特別的知識和專業技能,它們負責保有應用程序的數據和定義操作數據的邏輯。視圖對象知道如何顯示應用程序的模型數據,而且可能允許用戶對其進行編輯。控制 器對象是應用程序的視圖對象和模型對象之間的協調者

iOS平臺怎麼做數據的持久化?Core Data和SQLite有無必然聯繫?Core Data是一個關係型數據庫嗎?


數據的持久化本質上都是就是寫文件,但從邏輯上又分成很多種,比如寫入沙盒(其實是一個本應用程序纔可以訪問的路徑),比如存到網絡上,比如寫入數據庫。
Core data與sqlite還是有聯繫的,core data 是對sqlite的封裝,因爲sqlite是c語言的api,然而有人也需要obj-c 的api,所以有了 core data 另外,core data不僅僅是把c的api翻譯成oc 的api,還提供了一些管理的功能,使用更加方便。

內存管理的幾條原則時什麼?按照默認法則.那些關鍵字生成的對象需要手動釋放?在和property結合的時候怎樣有效的避免內存泄露?

誰申請,誰釋放

遵循CocoaTouch的使用原則;

內存管理主要要避免“過早釋放”和“內存泄漏”,對於“過早釋放”需要注意@property設置特性時,一定要用對特性關鍵字,對於“內存泄漏”,一定要申請了要負責釋放,要細心。

關鍵字alloc 或new 生成的對象需要手動釋放;

設置正確的property屬性,對於retain需要在合適的地方釋放,



發佈了43 篇原創文章 · 獲贊 11 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章