
一. CGD的底層實現(xiàn)
- iOS和OS X的核心是XNU內(nèi)核, GCD是基于XNU內(nèi)核實現(xiàn)的
- GCD的API全部在libdispatch庫中
- GCD的底層實現(xiàn)主要有Dispatch Queue 和Dispatch Source
- Dispatch Queue:管理block操作
- Dispatch Source:處理事件
二. Notification是同步還是異步?kvo是同步還是異步
包括代理,這些都是同步的;監(jiān)聽和回調(diào)都是在同一個線程中執(zhí)行
三. Objective C中的selector是什么?
可以理解@selector()就是取類方法的編號,他的行為基本可以等同C語言中的函數(shù)指針,只不過C語言中,可以吧函數(shù)名之間賦給一個函數(shù)指針,而Objective-C的類不能之間應(yīng)用函數(shù)指針,這樣只能做一個@selector語法來取.
它的結(jié)果是一個SEL類型,這個類型的本質(zhì)是累方法的編號(函數(shù)地址).方法以selector為索引.selector的數(shù)據(jù)類型是SEL定義成char*,我們可以把它想象成int .每個方法的名字對應(yīng)一個唯一的值.
四. 那些操作是屬于私有api的范疇?
私有API是指存放在PrivateFrameworks框架中的API 是蘋果明確不能使用的API 也可以說 一般在官方文檔和頭文件中看不到,但是實際存在于框架中的API 就是私有API,具體在提交應(yīng)用的時候回自動檢測.
私有API的存在很大一部分是為了保護隱私和系統(tǒng)安全,進制開發(fā)者使用這些功能.但是由于Objective-C的動態(tài)特性 ,使得實際上不可能存在真正意義的阻止調(diào)用這些API.
五. frame和bounds有什么不同
frame的位置是相對父空間的左上角來說的 參照的是父類的坐標(biāo)系,指的是空間在父控件內(nèi)的位置和大小
bounds的位置是相對控件自身的左上角來說的,參照的是自身坐標(biāo)系,指的是自己本身的大小
六. NSTimer和GCD的定時器有什么區(qū)別
NSTimer 可以調(diào)用invalidate進行撤銷,創(chuàng)建和撤銷必須在同一線程
NSTimer需要交定時器添加到當(dāng)前的runloop中
它的時間單位是秒
GCD一旦執(zhí)行就不能撤銷
GCD中的定時器不受runloop模式的影響
時間單位是納秒
七. 應(yīng)用程序的沙盒下,都有哪些文件夾?它們有什么特點?本地緩存一般存在哪個文件下?
1 Documents
將應(yīng)用程序的數(shù)據(jù)文件保存在該目錄下.不過這些數(shù)據(jù)類型僅限于不可以再生的數(shù)據(jù),可再生的數(shù)據(jù)文件應(yīng)該存在LIbrary/Cache下
2 Library 它有兩個子文件
- caches 主要是緩存文件,用戶使用過程中緩存都可以保存在這些目錄中.保存那些可再生的文件,比如網(wǎng)絡(luò)數(shù)據(jù)請求.因此,應(yīng)用程序通常還需要負(fù)責(zé)刪除這些文件.
- Preferences 應(yīng)用程序的偏好設(shè)置文件. 我們使用NSUserDefaults寫的設(shè)置數(shù)據(jù)都會保存到該目錄下的一個plist文件中 它會被iTunes同步
3. tmp
各種臨時文件, 保存應(yīng)用再次啟動時不需要的文件.而且,當(dāng)應(yīng)用不在需要這些文件時應(yīng)主動將其刪除,因為該目錄下的東西隨時有可能被系統(tǒng)清除,目前已知的一種可能清理的原因是系統(tǒng)磁盤存儲空間不足的時候
八. 為什么要使用第三方框架
- 使用第三方框架會大大的提高編碼效率
- 在完成功能時,三方框架一般性能優(yōu)于我們編寫的代碼
- 框架有許多值得我們學(xué)習(xí)的技術(shù)和思想
但第三方框架的使用也有缺點,比如正是因為用第三份框架 所有在使用上回遇到一些意料之外的問題,比如框架作者不在更新框架
九. 談?wù)勀銓VC的理解?
MVC是一種設(shè)計模式,它強制的將應(yīng)用程序的輸入、處理、和輸出分開。使用了MVC的應(yīng)用程序被分為3個核心部件:試圖(View)、模型(Model)、控制器(Controller)。它們各司其職,既分工明確又相互合作。
首先視圖接受用戶輸入請求,然后將請求傳遞給控制器,控制器再調(diào)用某個模型來處理用戶的請求,在控制器的控制下,再將處理后的結(jié)果交給某個視圖進行格式化輸出給用戶。MVC不僅實現(xiàn)了功能模塊和顯示模塊的分離,同時它還提高了系統(tǒng)的可維護性、可擴展性和組件的可復(fù)用性.
十. plist和pct文件的好處?
plist文件以便用來儲存數(shù)組或者字典,它是iOS中特有的存儲方式.它可以將數(shù)據(jù)與代碼隔離開,更便于數(shù)據(jù)的管理和展示.
pch里面可以保存一些全局的宏和頭文件.
pch是預(yù)編譯頭文件,其中存放有工程中已有編譯的部分代碼;在以后建立工程時就不用重新編譯這些代碼.
-
pch頭文件的內(nèi)容能被項目中的其他所有源文件共享訪問
- 存放一些全局的宏 (整個項目都用得上的宏)
- 用來包含一些全部的頭文件(整個項目都用得上的頭文件)
- 能自動打開或者關(guān)閉日志的輸出功能
pch弊端:每個文件都會導(dǎo)入,有效率問題.
純手動 有地方是個人理解 有誤的地方希望大家能給指出 謝謝
如果對您有幫助 希望能給個關(guān)注和喜歡~~~