原文鏈接: xiaozhuanlan.com
面試形式:電話面試
1. 你平時怎么解決網(wǎng)絡(luò)請求的依賴關(guān)系:當一個接口的請求需要依賴于另一個網(wǎng)絡(luò)請求的結(jié)果
解析:
- 辦法1:線程:NSOperation 操作依賴和優(yōu)先級
[operationB addDependency:operationA]; // 操作B依賴于操作
- 辦法2:邏輯:在上一個網(wǎng)絡(luò)請求的響應(yīng)回調(diào)中進行下一網(wǎng)絡(luò)請求的激活
2. 關(guān)于RAC你有怎樣運用到解決不同API依賴關(guān)系
- 信號的依賴
使用場景是當信號A執(zhí)行完才會執(zhí)行信號B,和請求的依賴很類似,例如請求A請求完畢才執(zhí)行請求B,我們需要注意信號A必須要執(zhí)行發(fā)送完成信號,否則信號B無法執(zhí)行
//這相當于網(wǎng)絡(luò)請求中的依賴,必須先執(zhí)行完信號A才會執(zhí)行信號B
//經(jīng)常用作一個請求執(zhí)行完畢后,才會執(zhí)行另一個請求
//注意信號A必須要執(zhí)行發(fā)送完成信號,否則信號B無法執(zhí)行
RACSignal * concatSignal = [self.signalA concat:self.signalB];
//這里我們是對這個拼接信號進行訂閱
[concatSignal subscribeNext:^(id x) {
NSLog(@"%@",x);
}];
3. 編譯鏈接你有了解多少
解析:這個涉及到簡單知識祠丝,可參考www.360doc.com/content/17/…
4. 簡單介紹下KVO的用法
解析:首先席镀,簡單介紹下KVO的用法陕截,先添加觀察者菊值,然后怎樣實現(xiàn)監(jiān)聽的代理觉至。關(guān)于原理祖屏,可以利用runtime的知識進行實現(xiàn)KVO的原理,筆者曾經(jīng)實現(xiàn)KVO的block和delegate兩種形式碍论,可參考www.reibang.com/p/c1aa85779…
簡單概述下 KVO 的實現(xiàn)原理:
當你觀察一個對象時谅猾,一個新的類會動態(tài)被創(chuàng)建柄慰。這個類繼承自該對象的原本的類鳍悠,并重寫了被觀察屬性的 setter 方法税娜。自然,重寫的 setter 方法會負責在調(diào)用原 setter方法之前和之后藏研,通知所有觀察對象值的更改敬矩。最后把這個對象的 isa 指針 ( isa 指針告訴 Runtime 系統(tǒng)這個對象的類是什么 ) 指向這個新創(chuàng)建的子類,對象就神奇的變成了新創(chuàng)建的子類的實例蠢挡。
原來弧岳,這個中間類,繼承自原本的那個類业踏。不僅如此禽炬,Apple 還重寫了 -class 方法,企圖欺騙我們這個類沒有變勤家,就是原本那個類腹尖。更具體的信息,去跑一下 Mike Ash 的那篇文章里的代碼就能明白伐脖,這里就不再重復热幔。
點擊加入:iOS技術(shù)分享群
整理的2020年《大廠最新常問iOS面試題+答案》,有需要的伙伴讼庇,直接加iOS技術(shù)交流群:761407670绎巨,免費獲取蠕啄;群內(nèi)更有內(nèi)推機會场勤!