面試總結(jié)(持續(xù)更新中)

3月1日面試(知春路一小公司)由淺入深


1.應(yīng)用程序的生命周期。

有storyboard情況下:

1.main函數(shù)

2.UIApplicationMain

* 創(chuàng)建UIApplication對(duì)象

* 創(chuàng)建UIApplication的delegate對(duì)象

3.根據(jù)Info.plist獲得最主要storyboard的文件名,加載最主要的storyboard(有storyboard)

* 創(chuàng)建UIWindow

* 創(chuàng)建和設(shè)置UIWindow的rootViewController

* 顯示窗口

沒有storyboard情況下:

1.main函數(shù)

2.UIApplicationMain

* 創(chuàng)建UIApplication對(duì)象

* 創(chuàng)建UIApplication的delegate對(duì)象

3.delegate對(duì)象開始處理(監(jiān)聽)系統(tǒng)事件(沒有storyboard)

* 程序啟動(dòng)完畢的時(shí)候, 就會(huì)調(diào)用代理的application:didFinishLaunchingWithOptions:方法

* 在application:didFinishLaunchingWithOptions:中創(chuàng)建UIWindow

* 創(chuàng)建和設(shè)置UIWindow的rootViewController

* 顯示窗口

2.@property()各種屬性

3.深拷貝與淺拷貝

淺拷貝只拷貝指針,不會(huì)產(chǎn)生新的對(duì)象;深拷貝是內(nèi)容拷貝,產(chǎn)生了新的對(duì)象。

4.runloop

NSRunLoop是IOS消息機(jī)制的處理模式

>1.NSRunLoop的主要作用:控制NSRunLoop里面線程的執(zhí)行和休眠,在有事情做的時(shí)候使當(dāng)前NSRunLoop控制的線程工作,沒有事情做讓當(dāng)前NSRunLoop的控制的線程休眠。

>2.NSRunLoop 就是一直在循環(huán)檢測,從線程start到線程end,檢測inputsource(如點(diǎn)擊,雙擊等操作)異步事件,檢測timesource同步事件,檢測到輸入源會(huì)執(zhí)行處理函數(shù),首先會(huì)產(chǎn)生通知,corefunction向線程添加runloop observers來監(jiān)聽事件,意在監(jiān)聽事件發(fā)生時(shí)來做處理。

>3.runloopmode是一個(gè)集合,包括監(jiān)聽:事件源,定時(shí)器,以及需通知的runloop observers

>1. 只有在為你的程序創(chuàng)建次線程的時(shí)候,才需要運(yùn)行run loop。對(duì)于程序的主線程而言,run loop是關(guān)鍵部分。Cocoa提供了運(yùn)行主線程run loop的代碼同時(shí)也會(huì)自動(dòng)運(yùn)行run loop。IOS程序UIApplication中的run方法在程序正常啟動(dòng)的時(shí)候就會(huì)啟動(dòng)run loop。如果你使用xcode提供的模板創(chuàng)建的程序,那你永遠(yuǎn)不需要自己去啟動(dòng)run loop

>2. 在多線程中,你需要判斷是否需要run loop。如果需要run loop,那么你要負(fù)責(zé)配置run loop并啟動(dòng)。你不需要在任何情況下都去啟動(dòng)run loop。比如,你使用線程去處理一個(gè)預(yù)先定義好的耗時(shí)極長的任務(wù)時(shí),你就可以毋需啟動(dòng)run loop。Run loop只在你要和線程有交互時(shí)才需要

5.gcd

6.runtime runtime怎么添加屬性方法

運(yùn)行時(shí)機(jī)制,runtime庫里面包含了跟類、成員變量、方法相關(guān)的API,比如獲取類里面的所有成員變量,為類動(dòng)態(tài)添加成員變量,動(dòng)態(tài)改變類的方法實(shí)現(xiàn),為類動(dòng)態(tài)添加新的方法等?需要導(dǎo)入

1.runtime,運(yùn)行時(shí)機(jī)制,它是一套C語言庫

2.實(shí)際上我們編寫的所有OC代碼,最終都是轉(zhuǎn)成了runtime庫的東西,比如類轉(zhuǎn)成了runtime庫里面的結(jié)構(gòu)體等數(shù)據(jù)類型,方法轉(zhuǎn)成了runtime庫里面的C語言函數(shù),平時(shí)調(diào)方法都是轉(zhuǎn)成了objc_msgSend函數(shù)(所以說OC有個(gè)消息發(fā)送機(jī)制)

3.因此,可以說runtime是OC的底層實(shí)現(xiàn),是OC的幕后執(zhí)行者

4.有了runtime庫,能做什么事情呢?runtime庫里面包含了跟類、成員變量、方法相關(guān)的API,比如獲取類里面的所有成員變量,為類動(dòng)態(tài)添加成員變量,動(dòng)態(tài)改變類的方法實(shí)現(xiàn),為類動(dòng)態(tài)添加新的方法等

5.因此,有了runtime,想怎么改就怎么改

7.數(shù)據(jù)本地化的幾種方式(NSUserDefaufts,歸檔反歸檔,數(shù)據(jù)庫,writeToFile)

8.堆和棧的區(qū)別

1.堆空間的內(nèi)存是動(dòng)態(tài)分配的,一般存放對(duì)象,并且需要手動(dòng)釋放內(nèi)存

2.??臻g的內(nèi)存由系統(tǒng)自動(dòng)分配,一般存放局部變量等,不需要手動(dòng)管理內(nèi)存

category和extension區(qū)別

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

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

  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,580評(píng)論 30 472
  • 一、深復(fù)制和淺復(fù)制的區(qū)別? 1、淺復(fù)制:只是復(fù)制了指向?qū)ο蟮闹羔?,即兩個(gè)指針指向同一塊內(nèi)存單元!而不復(fù)制指向?qū)ο蟮?..
    iOS_Alex閱讀 1,527評(píng)論 1 27
  • 1.屬性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作...
    曾令偉閱讀 1,127評(píng)論 0 10
  • 由于文章長度限制,本文作為[譯]線程編程指南(一)后續(xù)部分。 Run Loops Run loop是與線程相關(guān)的基...
    巧巧的二表哥閱讀 1,262評(píng)論 0 5
  • 快樂是用來回憶的, 當(dāng)你驀然回首時(shí), 心里想著的全是開心, 痛苦是用來遺忘的, 不要回憶痛苦, 因?yàn)橥纯嗍菒耗В?...
    Angel李子汐閱讀 440評(píng)論 2 5

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