一些概念的理解

1. struct和class的區(qū)別

swift中,class是引用類型府怯,struct是值類型煎饼。值類型在傳遞和賦值時將進行復制,而引用類型則只會使用引用對象的一個"指向"谤专。所以他們兩者之間的區(qū)別就是兩個類型的區(qū)別躁锡。
class有這幾個功能struct沒有的:

1、class可以繼承置侍,這樣子類可以使用父類的特性和方法
2映之、類型轉換可以在runtime的時候檢查和解釋一個實例的類型
3、可以用deinit來釋放資源
4蜡坊、一個類可以被多次引用

struct也有這樣幾個優(yōu)勢:

  • 結構較小杠输,適用于復制操作,相比于一個class的實例被多次引用更加安全秕衙。
  • 無須擔心內存memory leak或者多線程沖突問題
補充:
  • C語言中蠢甲,struct與的class的區(qū)別:
    struct只是作為一種復雜數據類型定義,不能用于面向對象編程据忘。
  • C++中鹦牛,struct和class的區(qū)別:
    對于成員訪問權限以及繼承方式,class中默認的是private的勇吊,而struct中則是public的曼追。class還可以用于表示模板類型,struct則不行汉规。

2. 介紹一下觀察者模式

觀察者模式(Observer Pattern):定義對象間的一種一對多依賴關系礼殊,使得每當一個對象狀態(tài)發(fā)生改變時,其相關依賴對象皆得到通知并被自動更新针史。
在IOS中典型的推模型實現方式為 NSNotificationCenterKVO晶伦。

1.png

1、觀察者Observer悟民,通過NSNotificationCenter的addObserver:selector:name:object接口來注冊對某一類型通知感興趣坝辫。在注冊時候一定要注意,NSNotificationCenter不會對觀察者進行引用計數+1的操作射亏,我們在程序中釋放觀察者的時候近忙,一定要去報從center中將其注銷了竭业。
2、通知中心NSNotificationCenter及舍,通知的樞紐未辆。
3、被觀察的對象锯玛,通過postNotificationName:object:userInfo:發(fā)送某一類型通知咐柜,廣播改變。
4攘残、通知對象NSNotification拙友,當有通知來的時候,Center會調用觀察者注冊的接口來廣播通知歼郭,同時傳遞存儲著更改內容的NSNotification對象遗契。

KVO

KVO的全稱是Key-Value Observer,即鍵值觀察病曾。是一種沒有中心樞紐的觀察者模式的實現方式牍蜂。一個主題對象管理所有依賴于它的觀察者對象,并且在自身狀態(tài)發(fā)生改變的時候主動通知觀察者對象泰涂。

注冊觀察者
[object addObserver:self forKeyPath:property options:NSKeyValueObservingOptionNew context:]鲫竞。
更改主題對象屬性的值,即觸發(fā)發(fā)送更改的通知逼蒙。
在制定的回調函數中从绘,處理收到的更改通知。
注銷觀察者 [object removeObserver:self forKeyPath:property]其做。

3.在一個HTTPS連接的網站里顶考,輸入賬號密碼點擊登錄后赁还,到服務器返回這個請求前妖泄,中間經歷了什么

這個非常得深非常得廣,我來大概說一下艘策。


2.png

1蹈胡、客戶端會打包一個請求,包括url朋蔫,端口啊罚渐,你的賬號密碼等等。賬號密碼登陸應該用的是Post方式驯妄,所以相關的用戶信息會被加載到body里面荷并。這個請求應該包含三個方面:網絡地址,協(xié)議青扔,資源路徑源织。注意翩伪,這里是HTTPS,就是HTTP + SSL / TLS谈息,在HTTP上又加了一層處理加密信息的模塊(相當于是個鎖)缘屹。

2、一般會先請求DNS服務器侠仇。DNS服務器負責將你的網絡地址解析成IP地址轻姿,這個IP地址對應網上一臺機器。這其中可能發(fā)生Hosts Hijack和ISP failure的問題逻炊。

3互亮、協(xié)議是獲取資源的方式HTTP,FTP余素,UDP胳挎,不同協(xié)議有不同的格式,有些是process-to-process的溺森,有些是host-to-host的慕爬。

4、客戶端會和服務器的端口之間建立一個socket連接屏积,socket一般都是以file descriptor的方式解析請求医窿。

5、服務器端接收到請求炊林。服務器端會有一套數字證書(相當于是個鑰匙)姥卢,這個證書會先返回給客戶端≡郏客戶端會解析證書独榴,相當于用鑰匙(證書)把鎖(內容)鎖上(生成私匙),接著再傳送加密信息奕枝。

6棺榔、服務器端接收到加密信息(私匙)之后,會進行解密隘道,并把要返回的數據進行對稱加密返回到客戶端爱沟。假如路徑不對潭辈,會出現404的錯誤糟需。

7旅赢、一般訪問服務器之前可能會訪問一下proxy。這玩意是個代理激捏,有時候當防火墻用设塔,有時候當cache使。如果后臺是reverse-proxy結構远舅,那么實際上有多個web服務器藏在proxy之后按需處理請求闰蛔,而你訪問的永遠是proxy竞思,這樣可以解決過載問題。

8钞护、有時候訪問完web服務器后還要訪問一下file服務器盖喷,主要是請求數據庫里的一些信息。

9难咕、服務器將相應打包课梳,直接或通過proxy(大多數時候)返回給客戶端∮嗟瑁客戶端會用剛剛生成的私匙進行解密暮刃,將內容顯示在瀏覽器上。

HTTPS加密過程詳解請去https原理:證書傳遞爆土、驗證和數據加密椭懊、解密過程解析

4.在一個app中間有一個button,在你手觸摸屏幕點擊后步势,到這個button收到點擊事件氧猬,中間發(fā)生了什么

響應鏈大概有以下幾個步驟

1、設備將touch到的UITouch和UIEvent對象打包, 放到當前活動的Application的事件隊列中

2坏瘩、單例的UIApplication會從事件隊列中取出觸摸事件并傳遞給單例UIWindow

3盅抚、UIWindow使用hitTest:withEvent:方法查找touch操作的所在的視圖view

RunLoop這邊我大概說一下

1、主線程的RunLoop被喚醒

2倔矾、通知Observer妄均,處理Timer和Source 0

3、Springboard接受touch event之后轉給App進程

4哪自、RunLoop處理Source 1丰包,Source1 就會觸發(fā)回調,并調用_UIApplicationHandleEventQueue() 進行應用內部的分發(fā)壤巷。

5邑彪、RunLoop處理完畢進入睡眠,此前會釋放舊的autorelease pool并新建一個autorelease pool

深挖請去深入理解RunLoop

UIResponder是UIView的父類隙笆,UIView是UIControl的父類锌蓄。

那個第三個寫的不是很好升筏,大家多多指教撑柔,說實話我第三個也不是很理解的

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市您访,隨后出現的幾起案子铅忿,更是在濱河造成了極大的恐慌,老刑警劉巖灵汪,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件檀训,死亡現場離奇詭異柑潦,居然都是意外死亡,警方通過查閱死者的電腦和手機峻凫,發(fā)現死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門渗鬼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人荧琼,你說我怎么就攤上這事譬胎。” “怎么了命锄?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵堰乔,是天一觀的道長。 經常有香客問我脐恩,道長镐侯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任驶冒,我火速辦了婚禮苟翻,結果婚禮上,老公的妹妹穿的比我還像新娘骗污。我一直安慰自己袜瞬,他們只是感情好,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布身堡。 她就那樣靜靜地躺著邓尤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贴谎。 梳的紋絲不亂的頭發(fā)上汞扎,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音擅这,去河邊找鬼澈魄。 笑死,一個胖子當著我的面吹牛仲翎,可吹牛的內容都是我干的痹扇。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼溯香,長吁一口氣:“原來是場噩夢啊……” “哼鲫构!你這毒婦竟也來了?” 一聲冷哼從身側響起玫坛,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤结笨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體炕吸,經...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡伐憾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了赫模。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片树肃。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瀑罗,靈堂內的尸體忽然破棺而出扫外,到底是詐尸還是另有隱情,我是刑警寧澤廓脆,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布筛谚,位于F島的核電站,受9級特大地震影響停忿,放射性物質發(fā)生泄漏驾讲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一席赂、第九天 我趴在偏房一處隱蔽的房頂上張望吮铭。 院中可真熱鬧,春花似錦颅停、人聲如沸谓晌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纸肉。三九已至,卻和暖如春喊熟,著一層夾襖步出監(jiān)牢的瞬間柏肪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工芥牌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留烦味,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓壁拉,卻偏偏與公主長得像谬俄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子弃理,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理溃论,服務發(fā)現,斷路器案铺,智...
    卡卡羅2017閱讀 134,638評論 18 139
  • 國家電網公司企業(yè)標準(Q/GDW)- 面向對象的用電信息數據交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,934評論 6 13
  • 首先蔬芥,機器學習的基本框架大都是模型梆靖、目標和算法控汉。對于一個數據集笔诵,首先要根據數據的特點和目的來選擇合適模型。即是什么...
    yz_wang閱讀 297評論 0 2
  • angularJS是以MVC為設計模式的JS框架 MVC(Model View Controller)設計模式(d...
    磚用冰西瓜閱讀 484評論 0 0
  • 最近看了一期情感類節(jié)目【大聲說出來】姑子,一個56歲的媽媽與34歲的女兒站在舞臺上乎婿,她們之間隔著有三、四步遠街佑。 媽媽頭...
    飄雪的季節(jié)閱讀 1,395評論 20 24