01.+load和+initialize的區(qū)別是什么?
調(diào)用時刻:
load:類加載進(jìn)內(nèi)存調(diào)用
initialize:當(dāng)?shù)谝淮问褂妙惢蛘咦宇惥蜁{(diào)用
調(diào)用次數(shù)
load只會調(diào)用一次
initialize:不確定,具體根據(jù)子類和具體調(diào)用情況
比如有個類,它有一個子類,第一次使用子類,父類的initialize調(diào)用2次
02.UITabBarController控制器中view的內(nèi)部結(jié)構(gòu)
1).存放子控制器的view:
2).UITabBar: 49
03.簡述你對協(xié)議的理解?
什么時候使用協(xié)議,為什么要搞個協(xié)議
為什么使用協(xié)議: 思想:當(dāng)有些事情,自己不想做,交給別人,就搞個協(xié)議.實(shí)例:Appdelegate
什么時候使用協(xié)議: 高級:延展到封裝自己框架(自定義類),常常通過協(xié)議給外界提供接口(協(xié)議)
04.UICollectionView使用步驟?
1.一定要初始化布局 *
2).設(shè)置數(shù)據(jù)源,展示 代理.處理cell點(diǎn)擊
3).cell必須通過注冊 *
4).cell必須要自定義 *
05.category和extension的區(qū)別
category:分類,可以取名
extension:擴(kuò)展,類目,匿名
作用?
category:可以擴(kuò)展方法,不能添加屬性
extension:可以添加屬性,也可以聲明方法
用法(區(qū)別):
category通常用于給系統(tǒng)類 擴(kuò)充方法
extension通常用于自定義類
06.runtime實(shí)現(xiàn)的機(jī)制是什么,有哪些用法,一般用于干嘛
運(yùn)行時機(jī)制,調(diào)用方法衣盾,一開始不確定哪個對象去吊用,等運(yùn)行的時候才會找到相應(yīng)對象去調(diào)用方法缘屹。
1).遍歷類中所有屬性和方法巨双,可以自己寫一套字典轉(zhuǎn)換模型工具類.
2).動態(tài)給分類添加屬性噪猾,需求:當(dāng)想把一個屬性保存系統(tǒng)的類中.
3).交換方法,系統(tǒng)方法達(dá)不到我們的需要筑累,想給系統(tǒng)的方法擴(kuò)充一些功能.
4).動態(tài)添加方法.
1.遍歷類所有屬性和方法
07.什么時候會發(fā)生EXC BAD ACCESS異常袱蜡?
1).解釋EXC BAD ACCESS異常?
2).怎么才會導(dǎo)致這個錯誤:訪問不該訪問的對象.
3).避免這種:當(dāng)一個對象被銷毀,記得清空指針.
08.怎么研究新的API
1).百度 iOS10API
2).WWDC和蘋果官方文檔
3).在新Xcode中創(chuàng)建項(xiàng)目,在舊的Xcode打開,發(fā)現(xiàn)很多錯誤,查一查.
4).查看別人的博客,如貓神,新的技術(shù)及時更新 如:簡書.
09-你是怎么理解bounds的
frame: 控件可視范圍 相當(dāng)于 父控件
bounds: 也是指的是范圍 指的是 控件可視范圍 在 內(nèi)容中 區(qū)域 . 控件可視范圍相對于內(nèi)容
內(nèi)容:每個控件都有自己內(nèi)容,而且是無限大,而且這個控件的所有子控件都是相對于內(nèi)容
bounds:以自己內(nèi)容為原點(diǎn)
10-數(shù)據(jù)傳值的幾種方式
順傳:直接定義屬性傳值
逆?zhèn)?代理,block
通知傳值:當(dāng)誰也拿不到誰的事情,可以采取使用通知傳值
11-KVC底層怎么實(shí)現(xiàn)的
1.根據(jù)key轉(zhuǎn)換成對應(yīng)set方法,去對象中找到有沒有對應(yīng)的set方法
2.根據(jù)key去查找有沒有對應(yīng)成員屬性,不帶下劃線
3.根據(jù)key去查找有沒有帶下劃線的成員屬性
4.直接報找不到對應(yīng)key錯誤
所以在通常開發(fā)中,一般會保證模型的屬性名根字典一一對應(yīng),當(dāng)然我們一種解決方式,
可以重寫報錯的方法,目的,把報錯方法實(shí)現(xiàn)給干掉,就不會報錯,這樣就可以不用藍(lán)模型中屬性與字典一一對應(yīng)
12-KVO底層怎么實(shí)現(xiàn)的
Person的name屬性改變
1.生成Person一個派生類(子類) Person_KVO
2.在這個子類中重寫setName方法 1.給成員屬性賦值 2.通知觀察者調(diào)用observeValueForKeyPath
3.改變person對象isa 改成Person_KVO
13-簡述項(xiàng)目開發(fā)的步驟
獨(dú)立開發(fā)
1.需求文檔:描述下應(yīng)用功能
2.查看原型圖:描述app每個界面 和 怎么與用戶交互
3.根據(jù)原型圖搭建基本項(xiàng)目結(jié)構(gòu),開始按模塊去開發(fā)
4.界面搭建完,再去查看接口文檔,請求數(shù)據(jù),然后展示
當(dāng)你做項(xiàng)目的時候,碰見一些什么問題. 簡歷中有一些項(xiàng)目,每個項(xiàng)目列舉兩個比較難題
百思不得姐:獲取全局導(dǎo)航條的時候,最好不要使用appearance , 應(yīng)該去使用appearanceWhenInContain
迭代開發(fā)
1.根據(jù)組長,項(xiàng)目經(jīng)理提供excel去做,這里就有每月的任務(wù)
2.需要去尋找找到對應(yīng)的類做事情,1.根據(jù)類名,去猜 2.通過斷點(diǎn)去調(diào)試,一層一層去尋找
14-如何做一個新的模塊
1.根據(jù)原型圖,劃分結(jié)構(gòu)
2.搭建界面
3.參照接口文檔,請求數(shù)據(jù),展示數(shù)據(jù)
4.調(diào)整界面細(xì)節(jié),提高用戶體驗(yàn)
5.處理界面業(yè)務(wù)邏輯(功能)