序
移動(dòng)互聯(lián)網(wǎng)行業(yè)一直是社會(huì)發(fā)展的一個(gè)趨勢(shì)隧膏,且這幾年快速十分迅速哗讥,諸如BAT這些大型的互聯(lián)網(wǎng)企業(yè)的用戶也是主要以移動(dòng)端用戶為主。
而iOS開發(fā)本身就屬于移動(dòng)開發(fā)胞枕,所以它依舊是目前熱門的行業(yè)杆煞,今天小編就跟大家聊聊iOS面試必考的幾大知識(shí)點(diǎn)。
01
Objective-C
●你是否接觸過OC中的反射機(jī)制腐泻?簡(jiǎn)單聊一下概念和使用
Class反射
通過類名的字符串形式實(shí)例化對(duì)象
Class class NSClassFromString@(@”student”);
Student *stu = [[class alloc ]init];
將類名變?yōu)樽址?/p>
Class class =[Student class];
NSString*className = NSStringFromClass(class);
SEL的反射
通過方法的字符串形式實(shí)例化方法
SEL selector = NSSelectorFromClass(@”setName”);
[stu perform Selector:selector withObject:@”Mike”];
將方法變成字符串
NSString FomrSelector(@selector*(setName:))
●編寫一個(gè)函數(shù)决乎,實(shí)現(xiàn)遞歸刪除指定路徑下的所有文件
02
Runloop&Runtime
●Runloop和線程有什么關(guān)系?
主線程的run loop默認(rèn)是啟動(dòng)的
iOS的應(yīng)用程序里面派桩,程序啟動(dòng)后會(huì)有一個(gè)如下的main()函數(shù)
(arc,*argv[]){
@autoreleasepool{
Return UIApplicationMain(argc,argv,,NSStringFromClass([AppDelegate class]));
}
}
重點(diǎn)是UIApplicationMain()函數(shù)构诚,這個(gè)方法會(huì)為mainthread設(shè)置一個(gè)NSRunLoop對(duì)象。
這就解釋了:為什么我們的應(yīng)用可以在無人操作的時(shí)候休息铆惑,需要讓它干活的時(shí)候又能立馬響應(yīng)范嘱。
對(duì)其它線程來說,runloop默認(rèn)是沒有啟動(dòng)的员魏,runloop只在你要和線程有交互時(shí)才需要彤侍。
在任何一個(gè)Cocoa程序的線程中,都可以通過以下代碼來獲取到當(dāng)前賢臣的runloop
NSRunLoop*runloop = [NSRunLoop currentRunLoop];
●Obiective-C如何對(duì)已有的方法逆趋,添加自己的功能代碼以實(shí)現(xiàn)類似記錄日志這樣的功能盏阶?
03
Swift
●舉例說明Swift里邊有哪些是Objective-C中沒有的?
Swift引入了在Objective-C中沒有的一些高級(jí)數(shù)據(jù)類型闻书,例如tuples(元祖)名斟,可以使你創(chuàng)建和傳遞一組數(shù)值。
Swift還引入了可選項(xiàng)類型(Optionals),用于處理變量值不存在的情況魄眉∨檠危可選項(xiàng)的意思有兩種,一種變量是存在的坑律,例如等于X岩梳,而是變量值根本不存在。Optionals類似于Objective-C中指向nil的指針晃择、但是適用于所有的數(shù)據(jù)類型冀值,而非僅僅局限于類,Optionals相比于Objective-C中nil指針更加安全簡(jiǎn)明宫屠,并且也是Swift諸多最大功能的核心列疗。
04
KVO-KVC
●KVC的底層實(shí)現(xiàn)?
●KVO的底層實(shí)現(xiàn)浪蹂?
結(jié)語
有人說iOS行情越來越難抵栈,其實(shí)這種說話并不準(zhǔn)確告材,在移動(dòng)網(wǎng)絡(luò)愈加普及的今天,iOS程序員失業(yè)的情況是不會(huì)出現(xiàn)的古劲。目前市場(chǎng)上iOS初級(jí)開發(fā)者人滿為患斥赋,但中級(jí)高級(jí)的開發(fā)者依舊非常稀缺,在這個(gè)時(shí)候产艾,你迫切需要的是提高自己的技術(shù)灿渴。
如何學(xué)習(xí)iOS?swift和OC到底該用誰胰舆?怎么樣確定未來發(fā)展方向?中、外企業(yè)間有何文化差異蹬挤?
作為iOS程序員缚窿,我們?cè)撊绾卧跁r(shí)代的浪潮中把握機(jī)遇,不被淘汰焰扳?
歡迎加入iOS技術(shù)交流群710170781倦零,獲取更多有用技術(shù)干貨、文檔資料吨悍。有一句話叫三人行必有我?guī)熒瑲g迎進(jìn)群共同進(jìn)步。