MUSE-Questions

問題:

1.如何實(shí)現(xiàn)多代理回調(diào),并且多個(gè)代理的方法都要執(zhí)行?

創(chuàng)建中間橋接類(代理的容器類),橋接類定義單獨(dú)的代理對(duì)象屬性 ?vc提供adddelegate的方法以及存儲(chǔ)橋接類的數(shù)組,回調(diào)的時(shí)候遍歷存儲(chǔ)橋接類的數(shù)組,依次執(zhí)行協(xié)議方法。

2.事件分發(fā)原理,手勢(shì)傳遞過程

只有繼承與uiresponder的對(duì)象能夠響應(yīng)事件touch對(duì)應(yīng)的api,事件產(chǎn)生后被加到uiapplication管理的事件隊(duì)列中,由它來由里往外遞,window-view-subview,遞歸傳遞(找到view之后調(diào)用hittest:查找view的子view),找到最合適的view(響應(yīng)鏈第一響應(yīng)者)后調(diào)用touches方法對(duì)事件進(jìn)行響應(yīng),如果沒有重寫將事件沿著響應(yīng)者鏈往上拋(由外往里拋一直到uiapplication,與事件傳遞相反),手勢(shì)識(shí)別器會(huì)延遲事件向所綁定的視圖傳遞,優(yōu)先去識(shí)別手勢(shì)處理touch事件

3.sd圖片存儲(chǔ)過期時(shí)間在什么時(shí)機(jī)設(shè)置?(有效時(shí)間設(shè)置)

下載結(jié)束實(shí)例化webimage的時(shí),sdimagecache中有變量表示圖片緩存的最大值和過期時(shí)間

4.kvo能監(jiān)聽數(shù)組么?

可以監(jiān)聽可變數(shù)組的長(zhǎng)度變化,但是不能監(jiān)聽到數(shù)組里面某一個(gè)對(duì)象的變化,不能使用array addobject的方式添加,要使用array [mutableArrayValueForKeyPath:@“dataArray”]

5.gcd的源碼理解

注意常用的幾個(gè)api,匯總group,順序執(zhí)行barrir

6.masonry如何使用鏈?zhǔn)秸Z法對(duì)autolayout進(jìn)行封裝的?

make.centerX.mas……()點(diǎn)語法實(shí)現(xiàn),通過屬性的方式實(shí)現(xiàn)多級(jí)的調(diào)用,調(diào)用的方法是對(duì)象的block屬性。將block作為屬性進(jìn)行訪問、block的返回參數(shù)是自定義對(duì)象

7.如何自己實(shí)現(xiàn)cell高度緩存,autolayout使用系統(tǒng)計(jì)算高度有什么問題?

tableview設(shè)置了UITableViewAutomaticDimension之后autolayout會(huì)自動(dòng)計(jì)算cell的高度但是不會(huì)緩存這個(gè)高度值,在cellforrowatindexpath中計(jì)算高度做緩存。cellforrow與heightforrow的調(diào)用順序:設(shè)置了預(yù)估高度前者在前、否則后者在前會(huì)輪訓(xùn)一遍計(jì)算contentsize

8.tableview優(yōu)化,設(shè)置透明度是怎么影響gpu性能的?

tableview的cell復(fù)用,緩存cell的高度不用每次都要計(jì)算,計(jì)算的時(shí)候放在異步線程中,圖片異步加載,緩存資源,懶加載,布局的時(shí)候不要太多層級(jí),不要?jiǎng)討B(tài)的添加subview提前添加完畢然后控制顯影 因?yàn)槊看翁砑又髸?huì)重新布局autolay消耗性能,減少繪圖操作;預(yù)渲染圖像,不要使用透明背景會(huì)導(dǎo)致混合操作(gpu負(fù)責(zé)),這個(gè)過程很耗時(shí)

9.iOS9之前tableview的代理為啥用assign?

之前的delegate需要在dealloc中對(duì)代理設(shè)置為nil,

assign修飾delegate不對(duì)引用計(jì)數(shù)操作,使用之后沒有設(shè)置為nil可能會(huì)產(chǎn)生野指針,而weak會(huì)自動(dòng)設(shè)置為nil。

10.runtime使用場(chǎng)景有哪些?

方法交換,獲取屬性列表方法列表,動(dòng)態(tài)創(chuàng)建類創(chuàng)建屬性。。。

11.jsonmodel實(shí)現(xiàn)細(xì)節(jié)

12.如何避免外界通過kvc訪問成員變量?

將accessInstanceVariablesDirectlygetter方法返回NO,

kvc本質(zhì)上是操作方法列表以及在內(nèi)存中查找實(shí)例變量,可以利用此特性訪問類的私有變量。

14.coretext,coreimage如何使用

15.gcd如何去取消一個(gè)正在執(zhí)行的請(qǐng)求任務(wù)

ios8之后可以調(diào)用dispatch_block_cancel來取消還沒有執(zhí)行的任務(wù)

模擬NSOperationQueue定義外部變量,用來標(biāo)記block是否需要取消,即外部變量為NO時(shí),可以在block里面返回(感覺這個(gè)操作沒什么意義)

16.NSOperationQueue 添加的任務(wù)默認(rèn)是怎么執(zhí)行,同步還是異步

可設(shè)置優(yōu)先級(jí)(operation設(shè)置完依賴之后再比較優(yōu)先級(jí)),并發(fā)數(shù)量

NSOperation默認(rèn)是同步執(zhí)行,將operation添加到隊(duì)列中是異步執(zhí)行的,給operation添加依賴 addDependency,即在其他operation執(zhí)行完之后在執(zhí)行

17.[obj someMethod],oc方法調(diào)用的原理是什么?

oc中方法調(diào)用最終轉(zhuǎn)換成runtime的c語言函數(shù)objc_msgSend(id receiver,SEL op,),信息發(fā)送后會(huì)在receiver類對(duì)象的方法列表中找這個(gè)方法。

首先去該類的cache中查詢,找到返回;沒找到就去methodlist中查找,找到就將方法的IMP返回并將IMP存入cache中;如果還沒有找到,通過super_calss找到父類,在父類的methodlist中查找;如果父類中沒有找到進(jìn)行動(dòng)態(tài)決議和消息轉(zhuǎn)發(fā);如果動(dòng)態(tài)決議和消息轉(zhuǎn)發(fā)返回NO和nil,就拋出異常

18.NSOperationQueue 中的串行指的是最大并發(fā)數(shù)為1,默認(rèn)是-1即并行

19.NSOperationQueue中執(zhí)行完A,B 再去執(zhí)行C任務(wù)如何實(shí)現(xiàn)

可以對(duì)任務(wù)設(shè)置依賴

20.靜默推送

iOS7之后在后臺(tái)任務(wù)增加了特性:后臺(tái)獲取、推送喚醒、后臺(tái)傳輸。

需求:在應(yīng)用退到后臺(tái)時(shí)某一個(gè)時(shí)間點(diǎn)喚醒設(shè)備更新UI,在用戶下次點(diǎn)擊應(yīng)用圖標(biāo)進(jìn)入應(yīng)用的時(shí)候就能看到已經(jīng)更新好的UI了。

后臺(tái)的格式:增加content-available字段并設(shè)成1;alert字段必須為空否則收到的就不是靜默推送;sound字段不影響靜默推送,看需求是否需要。

總結(jié):相當(dāng)于應(yīng)用在后臺(tái)的時(shí)候app中收到推送回調(diào),在沒有打開app的前提下去做一些操作,例如刷新UI等,Xcode中需要設(shè)置remote notifications

21.用c創(chuàng)建的對(duì)象arc下需要自己去釋放嗎?

用free()去釋放

22.udp服務(wù)器如何發(fā)送消息,是否是面向連接

23.項(xiàng)目中遇到哪些難題,上架是否遇到過問題?

項(xiàng)目難題:

上架問題:?jiǎn)?dòng)圖片含有蘋果的logo直接被打回;

上架勾選了內(nèi)購(gòu)但是沒有開發(fā)內(nèi)購(gòu)功能;符合內(nèi)購(gòu)的功能模塊確使用了第三方支付;

24.混合開發(fā)時(shí),客戶端的登錄狀態(tài)如何同步到h5頁(yè)面?

可以通過webjsbridge約定一個(gè)方法,在app登錄成功的時(shí)候通知h5去登錄

app中的登錄信息其實(shí)就是一個(gè)token值,可以將token或者用戶id傳遞給h5.

傳遞之前清理一下h5的地址對(duì)應(yīng)的cookie(遍歷cookie單例找到改url對(duì)應(yīng)cookie并刪除);

加載html的時(shí)候講token通過cookie傳遞過去(在包裝request的時(shí)候設(shè)置進(jìn)去);

25.weak的原理是什么,知道多少說多少?

weak是Runtime維護(hù)了一個(gè)hash(哈希)表,用于存儲(chǔ)指向某個(gè)對(duì)象的所有weak指針。weak表其實(shí)是一個(gè)hash(哈希)表,Key是所指對(duì)象的地址,Value是weak指針的地址(這個(gè)地址的值是所指對(duì)象指針的地址)數(shù)組。

26.wk與webview區(qū)別?

wkwebview有更多的h5特性,更高的滾動(dòng)刷新率內(nèi)置手勢(shì)

27.autolayout布局的view,如何在自己.m文件中獲取寬高以便子視圖根據(jù)條件布局?

可以在layoutsubviews里面獲取

28.xr的適配 設(shè)備唯一標(biāo)示怎么獲取 不用uidevice 蘋果貌似禁止了?

注意安全區(qū)safeArea,設(shè)備尺寸宏定義。[NSUUID UUID].UUIDString動(dòng)態(tài)id,每次生成的id都不一樣,udid/Mac地址/openudid 都被蘋果禁止了,蘋果不允許訪問用戶唯一的隱私數(shù)據(jù)。

29.表情是怎么實(shí)現(xiàn)的,本地存儲(chǔ)?還有表情是如何展示的(圖文混排怎么做)?

本地需要兩個(gè)字典,表情圖片字典、表情含義字典。圖文混排使用yykit

30.cache目錄下文件如何緩存的 跟tmp目錄下的文件有什么區(qū)別?

用戶生成的文件、其他數(shù)據(jù)及其他程序不能重新創(chuàng)建的文件,應(yīng)該保存在/Documents目錄下面,并將通過iCloud自動(dòng)備份,可以重新下載或者重新生成的數(shù)據(jù)保存在/Library /caches目錄下面,不備份。

tmp下的文件系統(tǒng)會(huì)根據(jù)情況將其清空 可能是內(nèi)存不足的時(shí)候也可能是其他時(shí)候

31.ios怎么去管理一個(gè)線程的生命周期?

可以監(jiān)控線程查看runloop處于什么mode

32.如何解決內(nèi)存暴漲問題?

創(chuàng)建對(duì)象的時(shí)候控制一次性創(chuàng)建的數(shù)量,創(chuàng)建完成回收該內(nèi)存空間

33.fmdb如何解決多線程問題?

使用FMDatabaseQueue 思路是:創(chuàng)建一個(gè)隊(duì)列,然后將放入隊(duì)列的block順序執(zhí)行,這樣避免了多線程同時(shí)訪問數(shù)據(jù)庫(kù);每個(gè)線程使用同一個(gè)Queue實(shí)例

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,621評(píng)論 1 32
  • 一、深復(fù)制和淺復(fù)制的區(qū)別? 1、淺復(fù)制:只是復(fù)制了指向?qū)ο蟮闹羔?,即兩個(gè)指針指向同一塊內(nèi)存單元!而不復(fù)制指向?qū)ο蟮?..
    iOS_Alex閱讀 1,527評(píng)論 1 27
  • 基礎(chǔ)部分 設(shè)計(jì)模式 1). MVC模式:Model View Control,把模型 視圖 控制器 層進(jìn)行解耦合編...
    微冷l閱讀 548評(píng)論 1 0
  • 《亂劍齊傷》 江中咩水船休誤, 羋山晨咪齊高嵩。 專書銘人讓他換, 離別時(shí)來無心間。 春芳花自花城又, 是批五堵詩(shī)...
    春城怡景閱讀 474評(píng)論 4 6
  • McDonald’s uses the iconic arch to convey where the close...
    賣加拿大海參閱讀 304評(píng)論 2 3

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