序
移動網際網路行業一直是社會發展的一個趨勢,且這幾年快速十分迅速,諸如BAT這些大型的網際網路企業的使用者也是主要以移動端使用者為主。
而iOS開發本身就屬於移動開發,所以它依舊是目前熱門的行業,今天小編就跟大家聊聊iOS面試必考的幾大知識點。
01
Objective-C
●你是否接觸過OC中的反射機制?簡單聊一下概念和使用
Class反射
透過類名的字串形式實體化物件
Class class NSClassFromString@(@”student”);
Student *stu = [[class alloc ]init];
將類名變為字串
Class class =[Student class];
NSString*className = NSStringFromClass(class);
SEL的反射
透過方法的字串形式實體化方法
SEL selector = NSSelectorFromClass(@”setName”);
[stu perform Selector:selector withObject:@”Mike”];
將方法變成字串
NSString FomrSelector(@selector*(setName:))
●編寫一個函式,實現遞迴刪除指定路徑下的所有檔案
02
Runloop&Runtime;
●Runloop和執行緒有什麼關係?
主執行緒的run loop預設是啟動的
iOS的應用程式裡面,程式啟動後會有一個如下的main()函式
(arc,*argv[]){
@autoreleasepool{
Return UIApplicationMain(argc,argv,,NSStringFromClass([AppDelegate class]));
}
}
重點是UIApplicationMain()函式,這個方法會為mainthread設定一個NSRunLoop物件。
這就解釋了:為什麼我們的應用可以在無人操作的時候休息,需要讓它幹活的時候又能立馬響應。
對其它執行緒來說,runloop預設是沒有啟動的,runloop只在你要和執行緒有互動時才需要。
在任何一個Cocoa程式的執行緒中,都可以透過以下程式碼來獲取到當前賢臣的runloop
NSRunLoop*runloop = [NSRunLoop currentRunLoop];
●Obiective-C如何對已有的方法,新增自己的功能程式碼以實現類似記錄日誌這樣的功能?
03
Swift
●舉例說明Swift裡邊有哪些是Objective-C中沒有的?
Swift引入了在Objective-C中沒有的一些高階資料型別,例如tuples(元祖),可以使你建立和傳遞一組數值。
Swift還引入了可選項型別(Optionals),用於處理變數值不存在的情況。可選項的意思有兩種,一種變數是存在的,例如等於X,而是變數值根本不存在。Optionals類似於Objective-C中指向nil的指標、但是適用於所有的資料型別,而非僅僅侷限於類,Optionals相比於Objective-C中nil指標更加安全簡明,並且也是Swift諸多最大功能的核心。
04
KVO-KVC
●KVC的底層實現?
●KVO的底層實現?
結語
有人說iOS行情越來越難,其實這種說話並不準確,在行動網路愈加普及的今天,iOS程式員失業的情況是不會出現的。目前市場上iOS初級開發者人滿為患,但中級高階的開發者依舊非常稀缺,在這個時候,你迫切需要的是提高自己的技術。
如何學習iOS?swift和OC到底該用誰?怎麼樣確定未來發展方向?中、外企業間有何文化差異?
作為iOS程式員,我們該如何在時代的浪潮中把握機遇,不被淘汰?
那麼小編這裡就向大家推薦一個iOS技術學習交流群,大家可以透過掃描或長按識別下方二維碼加入學習。
iOS學習交流群
不定期有逆向、iOS架構、反編譯等免費知識分享課,更有行業大咖講述各大公司面試技巧,如果你對程式員這份工作滿懷熱愛,如果你樂意走在技術的最前沿,不妨一同前行,未來屬於掌握技術的人們。