標籤:產生 pch bsp 動態 顯示 cat 方式 返回 程式載入
<簡書社區 — Timhbw>iOS基礎問答面試題連載(一)-附答案:http://www.jianshu.com/p/1ebf7333808d
<簡書社區 — Timhbw>iOS基礎問答面試題連載(二)-附答案:http://www.jianshu.com/p/ce50261f8907
<簡書社區 — Timhbw>iOS基礎問答面試題連載(三)-附答案:http://www.jianshu.com/p/5fd65c20912e
1.xcode5和xcode7區別?
xcode7沒有Frameworks檔案夾,xcode7內部會自動幫你匯入一些常見的架構.
xcode7多了LaunchScreen.xib,LaunchScreen.xib設定啟動介面,而且可以確定模擬器或者真機的真實尺寸,如果沒有設定,預設4s的尺寸(320,480)
xcode7沒有pch檔案
xcode5當中也有info.plist,只不過它的名字很長.是工程的名稱.
2.pch檔案原理?
3.UIApplication常見功能?
設定應用提醒數字
設定連網狀態
設定狀態列
跳轉網頁
4.程式完整啟動流程?
1.執行Main
2.執行UIApplicationMain函數.
3.建立UIApplication對象,並設定UIApplicationMain對象的代理.UIApplication的第三個參數就是UIApplication的名稱,如果指定為nil,它會預設為UIApplication.UIApplication的第四個參數為UIApplication的代理.
4.開啟一個主運行迴圈.保證應用程式不退出.
5.載入info.plist.載入設定檔.判斷一下info.plist檔案當中有沒有Main storyboard file base name,裡面有沒有指定storyboard檔案,如果有就去載入info.plist檔案,如果沒有,那麼應用程式載入完畢.
5.UIWindow是什麼?
UIWindow是一種特殊的UIView,通常在一個app中至少有一個UIWindow
iOS程式啟動完畢後,建立的第一個視圖控制項就是UIWindow,接著建立控制器的view,
最後將控制器的view添加到UIWindow上,於是控制器的view就顯示在螢幕上了
一個iOS程式之所以能顯示到螢幕上,完全是因為它有UIWindow
6.手動建立視窗的步驟?
7.makeKeyAndVisible做了哪些事情?
讓視窗成為顯示狀態.
把根控制器的View添加到視窗上面.
把當前視窗設定成應用程式的主視窗
8.如何從從StoryBoard載入控制器?
載入指定的storyBoard
載入箭頭所指向的控制器.
載入指定標識的控制器.
9.initWithNibName的載入過程?
如果沒有指定名稱.指定為nil,那麼它就會去先載入跟它相同名稱的Xib.
如果沒有跟它相同名稱的Xib,那麼它就會再去載入跟它相同名稱去點Controller的名字的Xib.- - 控制器的init方法會調用initWithNibName:方法.
10.LoadView 作用以及使用LoadView的注意點?
控制器調用loadView方法建立控制器的view.它的預設做法是:
先去判斷當前控制器是不是從StoryBoard當中載入的,如果是,那麼它就會從StoryBoard當中載入控制器的View.
如果不是從StoryBoard當中載入的, 那麼它還會判斷是不是從Xib當中建立的控制器.如果是,那麼它就會從xib載入控制器的View.
如果也不是從Xib載入的控制器.那麼它就會建立一個空的UIView.設為當前控制器的View.
一旦重寫了loadView,表示需要自己建立控制器的View.
如果控制器的View還沒有賦值,就不能調用控制器View的get方法.會造成死迴圈.
因為控制器View的get方法底層會調用loadView方法.
注意點:
11.UIPickView是什麼控制項,基本用法怎樣的?
UIPickView選擇控制項,用來供使用者選擇一些城市等.它的基本用法與tableView基本相似,要設定資料來源,代理, 讓其展示資料
12.KVC底層實現?
[flagItem setValue:obj forKeyPath:key];
1.會找有沒有跟key值相同名稱的set方法,如果有,就會調用set方法,把obj傳入
2.如果說沒有set方法.那麼它會去找沒有相同名稱,並且帶有底線的成員屬性,如果有就會給該屬性賦值.
3.如果也沒有帶有底線的成員屬性,就看有沒有跟它相同名稱的成員屬性,如果有就會給該屬性賦值.
4.如果還沒有跟它相同名稱的成員屬性,就會調用setValue:(id)value forUndefinedKey:
5.如果沒有實現setValue: forUndefinedKey: 就直接報錯
13.導航控制器View的結構是怎樣的?
一個專門存放棧頂控制器View的View
一個導航條,導航條的高度為44,Y值為20
14.導航push做了哪些事情?
15.導航pop做了哪些事情?
16.如何設定導航條的內容?
17.導航控制器pop操作有哪些?
18.文字框如何攔截使用者輸入?
給指定的檔案框,設定代理 ,實現代理方法.裡麵包括是否允許開始編輯,是否允許結束編輯,是否允許改變字元等等.
19.如何自訂鍵盤?
20.導航控制器的作用?
21.自動跳轉與手動型跳轉區別?
22.什麼時候使用代理 ,代理的步驟?
當一個對象發生某一件事時,想要把自己的東西傳給別人.或是通知別人做某事使用代理.
使用情境: 上下級之間,通常是它的上一級成為它的代理.
步驟:
1.定義協議
2.定義代理屬性
3.在.m檔案當中調用代理方法
4.設定代理
5.遵守協議
6.實現協議方法
23.ios當中儲存方式有哪些?
24.tableView效能最佳化
1.tableView的緩衝機制.
2.在不等高Cell當中,提前計算Cell的行高.提前估一個行高.200-250
3.如果說Cell當中有圓形圖片,圖片不要用ImageView載入layer.corneadius裁剪去做.會造成離屏渲染. 用繪圖Qurarzds裁剪,產生一張圓形的圖片.
4.如果說圖片的寬高,指定為小數點.會造成鋸齒,造成鋸齒就會導致離屏渲染
5.cell當中的ImageView的大小最好是跟UIImage是一樣大,如果不一樣大 它會對UIImage做形變操作.cell當中展示都是小圖.小圖的大小跟ImageView 點擊放大,是再去用大的ImageView載入大圖.
6.做tableView的時候一定要用真機.
7.如果是從網路載入資料,一定要放到子線程(非同步載入)當中做.
8.載入完畢的資料一定做本機快取.
9.cell當中不要動態添加子控制項.一般都在建立時,就把要出現的Cell給添加進去,暫時不要顯示的,可隱藏.
10.盡量減少Cell內部子控制項的個數.
11.如果控制項非常多,把不需要與使用者進行互動的控制項.能過非同步繪製出來.產生一張圖片.把圖片添加到cell當中
PDF2檔案下載:http://dl.huangbowei.com
原文連結:http://www.jianshu.com/p/ce50261f8907
iOS基礎問答面試