當前位置:
首頁 > 最新 > 超實用的ios面試技巧,90%的人都不知道……

超實用的ios面試技巧,90%的人都不知道……

內容來源:本文轉自ios開發者微信公眾號(ID: iOSAppCoder),好文請多支持!感謝您的閱讀~

閱讀字數:3754 | 10分鐘閱讀

移動互聯網行業一直是社會發展的一個趨勢,且這幾年快速十分迅速,諸如BAT這些大型的互聯網企業的用戶也是主要以移動端用戶為主。

iOS開發本身就屬於移動開發,所以它依舊是目前熱門的行業,今天小編就跟大家聊聊iOS面試必考的幾大知識點

1

Objective-C

你是否接觸過OC中的反射機制?簡單聊一下概念和使用

Class反射

通過類名的字元串形式實例化對象

將類名變為字元串

SEL的反射

通過方法的字元串形式實例化方法

將方法變成字元串

編寫一個函數,實現遞歸刪除指定路徑下的所有文件

2

Runloop&Runtime

Runloop和線程有什麼關係?

主線程的run loop默認是啟動的

iOS的應用程序裡面,程序啟動後會有一個如下的main()函數

重點是UIApplicationMain()函數,這個方法會為mainthread設置一個NSRunLoop對象。這就解釋了:為什麼我們的應用可以在無人操作的時候休息,需要讓它幹活的時候又能立馬響應。

對其它線程來說,runloop默認是沒有啟動的,runloop只在你要和線程有交互時才需要。在任何一個Cocoa程序的線程中,都可以通過以下代碼來獲取到當前賢臣的runloop。

Obiective-C如何對已有的方法,添加自己的功能代碼以實現類似記錄日誌這樣的功能?

3

Swift

舉例說明Swift裡邊有哪些是Objective-C中沒有的?

Swift引入了在Objective-C中沒有的一些高級數據類型,例如tuples(元祖),可以使你創建和傳遞一組數值。

Swift還引入了可選項類型(Optionals),用於處理變數值不存在的情況。可選項的意思有兩種,一種變數是存在的,例如等於X,而是變數值根本不存在。Optionals類似於Objective-C中指向nil的指針、但是適用於所有的數據類型,而非僅僅局限於類,Optionals相比於Objective-C中nil指針更加安全簡明,並且也是Swift諸多最大功能的核心。

4

KVO-KVC

KVC的底層實現?

當一個對象調用setValue方法時,方法內部會做以下操作:

檢查是否存在相應key的set方法,如果存在,就調用set方法

如果set方法不存在,就會查找與key相同名稱並且帶下劃線的成員屬性,如果有,則直接給成員屬性賦值

如果沒有找到_key,就會查找相同名稱的屬性key,如果有就直接賦值

如果還沒找到,則調用valueForUndefinedKey:和setValue:forUndefinedKey:方法。

這些方法的默認實現都是拋出異常,我們可以根據需要重寫它們。

KVO的底層實現?

- kvo基於runtime機制實現。

- 使用了isa混寫(isa-swizzling),當一個對象(假設是person對象,person的類是MYPerson)的屬性值(假設person的age)發生改變時,系統會自動生成一個類,繼承自MYPerson:NSKVONotifying_MYPerson,在這個類的setAge方法裡面,調用[super setAge:age] [self willChangeValueForKey:@"age"] 和 [self didChangeValueForKey:@"age"],而這兩個方法內部會主動調用監聽者內部的 - (void)observeValueForKeyPath 這個方法。

5

結語

有人說iOS行情越來越難,其實這種說話並不準確,在移動網路愈加普及的今天,iOS程序員失業的情況是不會出現的。目前市場上iOS初級開發者人滿為患,但中級高級的開發者依舊非常稀缺,在這個時候,就需要提高自己的技術。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT大咖說 的精彩文章:

1月20日FCC黑客馬拉松決戰來襲!
情人節,女生對程序猿男友的血淚控訴

TAG:IT大咖說 |