蘇寧一面

1、你使用過(guò)KVO嗎?說(shuō)說(shuō)看。

  • KVO 是 Objective-C 對(duì)觀察者設(shè)計(jì)模式的一種實(shí)現(xiàn)。【另外一種是:通知機(jī)制
  • KVO提供一種機(jī)制,指定一個(gè)被觀察對(duì)象(例如A類(lèi)),當(dāng)對(duì)象某個(gè)屬性(例如A中的字符串name)發(fā)生更改時(shí),對(duì)象會(huì)獲得通知,并作出相應(yīng)處理;【且不需要給被觀察的對(duì)象添加任何額外代碼,就能使用KVO機(jī)制】
  • 基本的原理:KVO 的實(shí)現(xiàn)依賴(lài)于 Objective-C 強(qiáng)大的 Runtime。當(dāng)觀察某對(duì)象A時(shí),KVO機(jī)制動(dòng)態(tài)創(chuàng)建一個(gè)對(duì)象A當(dāng)前類(lèi)的子類(lèi),并為這個(gè)新的子類(lèi)重寫(xiě)了被觀察屬性KeyPath的Setter 方法。Setter 方法隨后負(fù)責(zé)通知觀察對(duì)象屬性的改變狀況。

答案:

2、你知道哪些加密方式?

編碼方案 Base64
加密方案 MD5 \ SHA \ DES \ 3DES \ RC2和RC4 \ RSA \ IDEA \ DSA \ AES

追問(wèn):Base64是加密方式嗎?它和MD5有什么區(qū)別,或者說(shuō)MD5的特點(diǎn)是什么?

答案:不是。它是一種編碼,類(lèi)似UTF-8。MD5的特點(diǎn)是每次固定字符加密出來(lái)的密文都是相同的,不可逆性。

繼續(xù)追問(wèn):如果我只是一個(gè)“123”字符串,使用MD5加密很容易被猜出來(lái),如何避免呢?

答案:加鹽(Salt):在明文的固定位置插入隨機(jī)串,然后再進(jìn)行MD5
先加密
后亂序:先對(duì)明文進(jìn)行MD5,然后對(duì)加密得到的MD5串的字符進(jìn)行亂序

3、Runtime你使用過(guò)嗎?都使用了哪些

答案:
image.png

4、擴(kuò)展和分類(lèi)有什么區(qū)別?

答案:

  • 分類(lèi)只能擴(kuò)充方法,不能擴(kuò)展屬性和成員變量(但使用Runtime可以添加屬性)
  • 擴(kuò)展沒(méi)有名稱(chēng),分類(lèi)有。
  • 一般我們把私有屬性以擴(kuò)展的方法寫(xiě)在.m中

5、你怎么獲取私有屬性?

答案:

  • 使用KVC獲取。
NSString *cat_name = [cat valueForKey:@"name"];
[cat setValue:@"大花貓" forKey:@"name"];
  • 使用Runtime
Ivar m_name = class_getInstanceVariable([Cat class], "_name");
cat_name = (NSString *)object_getIvar(cat, m_name);

6、Socket了解嗎?說(shuō)說(shuō)它和TCP的區(qū)別。

答案:

  • Socket是進(jìn)程通訊的一種方式,即調(diào)用這個(gè)網(wǎng)絡(luò)庫(kù)的一些API函數(shù)實(shí)現(xiàn)分布在不同主機(jī)的相關(guān)進(jìn)程之間的數(shù)據(jù)交換。
  • Socket通信分為Server端和Client端,開(kāi)發(fā)過(guò)程中分別對(duì)應(yīng)著服務(wù)器和客戶(hù)端。當(dāng)連接上服務(wù)器后,Socket就會(huì)啟動(dòng)一個(gè)While或For無(wú)限循環(huán),不斷的異步監(jiān)聽(tīng)Socket動(dòng)靜,看是否有Read或者Write動(dòng)作,直到出錯(cuò)或者主動(dòng)結(jié)束。
    區(qū)別:
  • TCP 是傳輸層的協(xié)議;
  • Socket 是從傳輸層上抽象出來(lái)的一個(gè)抽象層,本質(zhì)是接口。
  • Socket層只是在TCP/UDP傳輸層上的抽象接口層,因次一個(gè)Socket連接可以基于TCP也可以基于UDP。UDP協(xié)議是不需要建立連接過(guò)程的,不管對(duì)方收不收到消息我都發(fā),不可靠的傳輸(即時(shí)通訊)所以“Socket也是基于TCP”

7、一些項(xiàng)目描述問(wèn)題......

iOS技術(shù)交流群:511860085 歡迎加入!

我的博客即將搬運(yùn)同步至騰訊云+社區(qū),邀請(qǐng)大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=of5mt237qsan

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.談?wù)?tableview 的重用機(jī)制。 為什么要“重用”?iPhone 重用機(jī)制是為了實(shí)現(xiàn)大量數(shù)據(jù)顯示而采用的...
    大王叫我來(lái)巡山_Cong閱讀 1,963評(píng)論 0 13
  • 后續(xù)有時(shí)間可能會(huì)不斷地補(bǔ)充一些知識(shí)點(diǎn)。 一:簡(jiǎn)要說(shuō)說(shuō)iOS內(nèi)存管理 1:凡是使用 alloc, new或者new開(kāi)...
    jozdee閱讀 806評(píng)論 0 1
  • 1、OC中創(chuàng)建線程的方法是什么?如果指定在主線程中執(zhí)行代碼?如何延時(shí)執(zhí)行代碼?!倦y度系數(shù)★★】 1)創(chuàng)建線程的方法...
    木旁_G閱讀 2,080評(píng)論 2 16
  • 【原創(chuàng)】女子為男子承受十八根肋骨齊斷之苦但男子卻娶了另外一個(gè)女子,婚后兩人相濡以沫女子卻因此倍感幸福(你看懂了嗎?...
    Mr橘子閱讀 295評(píng)論 5 3
  • 有一個(gè)夜班度過(guò)的周末。 一碗元宵。 聽(tīng)著窗外爆竹聲不絕于耳,卻看不到漫天煙火。 周六早上,換了八個(gè)藥,包括拔尿管,...
    王翊茗閱讀 289評(píng)論 0 0

友情鏈接更多精彩內(nèi)容