ios 基礎(chǔ)知識(shí)整理(三)

一裕菠、遠(yuǎn)程推送原理

推送流程圖.jpg

??????當(dāng)設(shè)備聯(lián)網(wǎng)的時(shí)候都會(huì)與蘋果的APNS服務(wù)器建立一個(gè)長(zhǎng)鏈接邻储,當(dāng)我們的后臺(tái)服務(wù)器(或者叫:應(yīng)用程序的服務(wù)器)(Provider)推送一條通知的時(shí)候供炼,會(huì)先把要發(fā)送的消息、iPhone的標(biāo)識(shí)打包利朵,發(fā)給蘋果的APNS服務(wù)器待榔。 接著APNS服務(wù)器會(huì)在自身已經(jīng)注冊(cè)Push服務(wù)的設(shè)備列表中查找有相應(yīng)標(biāo)識(shí)的設(shè)備逞壁,并把消息發(fā)送到iPhone。iPhone把發(fā)來的消息傳遞給相應(yīng)的應(yīng)用程序锐锣,并且按照設(shè)預(yù)先設(shè)定好的格式在設(shè)備上彈出通知提醒腌闯。

二、http 與 https 的區(qū)別是什么雕憔?

參考博客一
參考博客二

  • http是超文本傳輸協(xié)議姿骏,數(shù)據(jù)明文傳輸,不能保障數(shù)據(jù)傳輸?shù)陌踩越锉恕H菀妆蛔グ?/li>
  • http的連接很簡(jiǎn)單,是無狀態(tài)的分瘦。并且使用的端口是80蘸泻。不能驗(yàn)證通信方的身份,因此可能會(huì)遭遇偽裝嘲玫。
  • https 則是具有安全性的SSL加密傳輸協(xié)議悦施。端口使用的是443。
  • Https協(xié)議需要使用CA付費(fèi)申請(qǐng)證書去团,是具有安全性的 SSL 加密傳輸協(xié)議抡诞。

三、深拷貝與淺拷貝

1.兩者的定義
  • 淺拷貝: 并不會(huì)進(jìn)行真正的復(fù)制土陪,而是復(fù)制的對(duì)象和原對(duì)象都指向同一個(gè)地址昼汗。
  • 深拷貝: 真正的復(fù)制了一份,復(fù)制的對(duì)象指向了新的地址鬼雀。
2.總結(jié)
  • 深拷貝就是內(nèi)容拷貝顷窒,淺拷貝就是指針拷貝。
  • 本質(zhì)的區(qū)別在于:
    (1).是否開啟新的內(nèi)存地址源哩。
    (2).是否影響內(nèi)存地址的引用計(jì)數(shù)鞋吉。

四、反射機(jī)制如何使用璧疗?可以參考這篇博客

// SEL和字符串轉(zhuǎn)換
FOUNDATION_EXPORT NSString *NSStringFromSelector(SEL aSelector);
FOUNDATION_EXPORT SEL NSSelectorFromString(NSString *aSelectorName);
// Class和字符串轉(zhuǎn)換
FOUNDATION_EXPORT NSString *NSStringFromClass(Class aClass);
FOUNDATION_EXPORT Class __nullable NSClassFromString(NSString *aClassName);
// Protocol和字符串轉(zhuǎn)換
FOUNDATION_EXPORT NSString *NSStringFromProtocol(Protocol *proto) NS_AVAILABLE(10_5, 2_0);
FOUNDATION_EXPORT Protocol * __nullable NSProtocolFromString(NSString *namestr) NS_AVAILABLE(10_5, 2_0);

通過上邊的方法可以動(dòng)態(tài)的創(chuàng)建自己需要的實(shí)例坯辩,也可以動(dòng)態(tài)的選擇調(diào)用哪一個(gè)方法馁龟。

//1.將字符串@"ViewController"轉(zhuǎn)換成Class崩侠。
Class class = NSClassFromString(@"ViewController");
//2.創(chuàng)建控制器的實(shí)例。
ViewController *vc = [[class alloc] init];
//3.把對(duì)應(yīng)的"reloadData"方法名生成SEL坷檩。
SEL selector = NSSelectorFromString(@"reloadData");
//4.執(zhí)行該方法
[vc performSelector:selector];

五却音、SDWebImage 加載圖片的原理

參考的這篇博客這里我只是做了整理總結(jié)。

加載原理的流程圖.png

原理文字描述: SDWebImage 采用的是二級(jí)緩存的機(jī)制矢炼。當(dāng)我們調(diào)用從網(wǎng)絡(luò)獲取圖片的時(shí)候系瓢,會(huì)根據(jù)圖片的URL先去本地內(nèi)存中查找,如果查找到的話就直接展示句灌,若沒有找到的話就會(huì)去硬盤中去查找夷陋,若查找到的話就展示,未查找到就去網(wǎng)絡(luò)請(qǐng)求下載圖片胰锌,下載完成之后將圖片進(jìn)行解碼骗绕,解碼后去展示圖片,然后在將圖片保存到內(nèi)存硬盤中進(jìn)行緩存资昧。

六酬土、runtime 的消息轉(zhuǎn)發(fā)流程是什么?整理參考這篇博客格带,像原文作者致敬撤缴。

Snip20201225_1.png

利用上圖進(jìn)行分析總結(jié)消息轉(zhuǎn)發(fā)的流程:
例如現(xiàn)在有一個(gè)對(duì)象叫JCCat刹枉,然后又有一個(gè)方法叫eat。方法調(diào)用為[JCCat eat]屈呕。

  1. 動(dòng)態(tài)解析方法
    當(dāng)接收到未知消息的時(shí)候(假設(shè)JCCat對(duì)象中的eat方法未實(shí)現(xiàn))微宝,runtime 會(huì)調(diào)用+(BOOL) resolveInstanceMethod:(實(shí)例方法) 或者+resolveClassMethod:(類方法)。
    2.備用接收者
    若以上方法做了相關(guān)的處理虎眨,那么消息會(huì)正常處理芥吟。若以上方法沒有做處理,runtime會(huì)調(diào)用- (id)forwardingTargetForSelector:(SEL)aSelector方法专甩。若該方法返回了一個(gè)非nil(也不能是self)的對(duì)象钟鸵,而且該該對(duì)象實(shí)現(xiàn)了這個(gè)方法,那么這個(gè)對(duì)象就成了消息的接收者涤躲,消息就被分發(fā)到改對(duì)象棺耍。使用情況:通常在對(duì)象內(nèi)部使用,讓內(nèi)部的另一個(gè)對(duì)象處理消息种樱,在外邊看起來就像是該對(duì)象處理了消息蒙袍。
    3.完整的消息轉(zhuǎn)發(fā)
    在- (void)forwardInvocation:(NSInvocation *)anInvocation方法中選擇轉(zhuǎn)發(fā)消息的對(duì)象,其中anInvocation對(duì)象封裝了未知消息的所有細(xì)節(jié)嫩挤,并保留調(diào)用結(jié)果發(fā)送到原始調(diào)用者害幅。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市岂昭,隨后出現(xiàn)的幾起案子以现,更是在濱河造成了極大的恐慌,老刑警劉巖约啊,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邑遏,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡恰矩,警方通過查閱死者的電腦和手機(jī)记盒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來外傅,“玉大人纪吮,你說我怎么就攤上這事∥龋” “怎么了碾盟?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)奥洼。 經(jīng)常有香客問我巷疼,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任嚼沿,我火速辦了婚禮估盘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘骡尽。我一直安慰自己遣妥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布攀细。 她就那樣靜靜地躺著箫踩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谭贪。 梳的紋絲不亂的頭發(fā)上境钟,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音俭识,去河邊找鬼慨削。 笑死,一個(gè)胖子當(dāng)著我的面吹牛套媚,可吹牛的內(nèi)容都是我干的缚态。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼堤瘤,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了本辐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤环葵,失蹤者是張志新(化名)和其女友劉穎调窍,沒想到半個(gè)月后宝冕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡邓萨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宝剖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡歉甚,死狀恐怖万细,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纸泄,我是刑警寧澤赖钞,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站弓千,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏洋访。R本人自食惡果不足惜谴餐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望岂嗓。 院中可真熱鬧扶歪,春花似錦摄闸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)品洛。三九已至摩桶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間硝清,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工士飒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蔗崎,地道東北人酵幕。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓缓苛,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親笔刹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子庐完,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容