iOS基礎問答面試題連載(二)

1.xcode5和xcode7區(qū)別?

  • xcode7沒有Frameworks文件夾,xcode7內(nèi)部會自動幫你導入一些常見的框架.
  • xcode7多了LaunchScreen.xib,LaunchScreen.xib設置啟動界面,而且可以確定模擬器或者真機的真實尺寸,如果沒有設置,默認4s的尺寸(320,480)
  • xcode7沒有pch文件
  • xcode5當中也有info.plist,只不過它的名字很長.是工程的名稱.

2.pch文件原理?

  • 把pch里面的所有內(nèi)容導入到每個文件中去

3.UIApplication常見功能?

  • 設置應用提醒數(shù)字
  • 設置連網(wǎng)狀態(tài)
  • 設置狀態(tài)欄
  • 跳轉(zhuǎn)網(wǎng)頁

4.程序完整啟動流程?

  • 1.執(zhí)行Main
  • 2.執(zhí)行UIApplicationMain函數(shù).
  • 3.創(chuàng)建UIApplication對象,并設置UIApplicationMain對象的代理.UIApplication的第三個參數(shù)就是UIApplication的名稱,如果指定為nil,它會默認為UIApplication.UIApplication的第四個參數(shù)為UIApplication的代理.
  • 4.開啟一個主運行循環(huán).保證應用程序不退出.
  • 5.加載info.plist.加載配置文件.判斷一下info.plist文件當中有沒有Main storyboard file base name,里面有沒有指定storyboard文件,如果有就去加載info.plist文件,如果沒有,那么應用程序加載完畢.

5.UIWindow是什么?

  • UIWindow是一種特殊的UIView娃豹,通常在一個app中至少有一個UIWindow
  • iOS程序啟動完畢后荠锭,創(chuàng)建的第一個視圖控件就是UIWindow封恰,接著創(chuàng)建控制器的view洲炊,
    最后將控制器的view添加到UIWindow上,于是控制器的view就顯示在屏幕上了
  • 一個iOS程序之所以能顯示到屏幕上岳锁,完全是因為它有UIWindow

6.手動創(chuàng)建窗口的步驟?

  • 1.創(chuàng)建窗口,要有窗口顯示,必須要有強引用.窗口也是控件,要想展示出來.必須得要有尺寸.
  • 2.創(chuàng)建控制器
  • 3.設置控制器為窗口的根控制器
  • 4.顯示窗口

7.makeKeyAndVisible做了哪些事情?

  • 讓窗口成為顯示狀態(tài).
  • 把根控制器的View添加到窗口上面.
  • 把當前窗口設置成應用程序的主窗口

8.如何從從StoryBoard加載控制器?

  • 加載指定的storyBoard
  • 加載箭頭所指向的控制器.
  • 加載指定標識的控制器.

9.initWithNibName的加載過程?

  • 如果沒有指定名稱.指定為nil,那么它就會去先加載跟它相同名稱的Xib.
  • 如果沒有跟它相同名稱的Xib,那么它就會再去加載跟它相同名稱去點Controller的名字的Xib.- - 控制器的init方法會調(diào)用initWithNibName:方法.

10.LoadView 作用以及使用LoadView的注意點?

  • 控制器調(diào)用loadView方法創(chuàng)建控制器的view.它的默認做法是:

  • 先去判斷當前控制器是不是從StoryBoard當中加載的,如果是,那么它就會從StoryBoard當中加載控制器的View.

  • 如果不是從StoryBoard當中加載的, 那么它還會判斷是不是從Xib當中創(chuàng)建的控制器.如果是,那么它就會從xib加載控制器的View.

  • 如果也不是從Xib加載的控制器.那么它就會創(chuàng)建一個空的UIView.設為當前控制器的View.

  • 注意點:

    • 一旦重寫了loadView,表示需要自己創(chuàng)建控制器的View.
    • 如果控制器的View還沒有賦值,就不能調(diào)用控制器View的get方法.會造成死循環(huán).
      因為控制器View的get方法底層會調(diào)用loadView方法.

11.UIPickView是什么控件,基本用法怎樣的?

  • UIPickView選擇控件,用來供用戶選擇一些城市等.它的基本用法與tableView基本相似,要設置數(shù)據(jù)源,代理, 讓其展示數(shù)據(jù)

12.KVC底層實現(xiàn)?

  • 拿字符串與當前類的屬性進行匹配.如果匹配到,就給該屬性賦值.
[flagItem setValue:obj forKeyPath:key];
  • 1.會找有沒有跟key值相同名稱的set方法,如果有圆米,就會調(diào)用set方法,把obj傳入
  • 2.如果說沒有set方法.那么它會去找沒有相同名稱,并且?guī)в邢聞澗€的成員屬性,如果有就會給該屬性賦值.
  • 3.如果也沒有帶有下劃線的成員屬性,就看有沒有跟它相同名稱的成員屬性,如果有就會給該屬性賦值.
  • 4.如果還沒有跟它相同名稱的成員屬性,就會調(diào)用
setValue:(id)value forUndefinedKey:
  • 5.如果沒有實現(xiàn)setValue: forUndefinedKey: 就直接報錯

13.導航控制器View的結構是怎樣的?

  • 一個專門存放棧頂控制器View的View
  • 一個導航條,導航條的高度為44,Y值為20

14.導航push做了哪些事情?

  • 當調(diào)用push方法時, 會把要push的控制器添加到導航控制器管理的棧中,把之前導航控制器中棧頂控制器View給移除,把當前棧頂控制器添加上去.

15.導航pop做了哪些事情?

  • 當調(diào)用pop方法時, 會把要pop的控制器從棧里移除,把之前導航控制器中棧頂控制器View給移除,把當前棧頂控制器添加上去.

16.如何設置導航條的內(nèi)容?

  • 導航條的內(nèi)容由導航控制器的棧頂控制器的NavigationItem決定.

17.導航控制器pop操作有哪些?

  • 返回上一級
  • 返回到根控制器
  • 返回到指定的控制器.

18.文本框如何攔截用戶輸入?

  • 給指定的文件框,設置代理 ,實現(xiàn)代理方法.里面包括是否允許開始編輯,是否允許結束編輯,是否允許改變字符等等.

19.如何自定義鍵盤?

  • 自定義鍵盤,要繼承系統(tǒng)的UITextField,設置文本框的一個屬性,該屬性名稱為inputView.這樣就可以把鍵盤定義成自己要想的View.

20.導航控制器的作用?

  • 導航控制器可以輕松的完成控制器之間的切換.其操作有push,pop等.

21.自動跳轉(zhuǎn)與手動型跳轉(zhuǎn)區(qū)別?

  • 自動跳轉(zhuǎn):通過控件直接拖線的方式進行跳轉(zhuǎn)
  • 手動跳轉(zhuǎn):在跳轉(zhuǎn)之前要去做一些處理工作. 必須得要執(zhí)行performSegueWithIdentifier:才能跳轉(zhuǎn).

22.什么時候使用代理 ,代理的步驟?

  • 當一個對象發(fā)生某一件事時,想要把自己的東西傳給別人.或是通知別人做某事使用代理.
  • 使用場景: 上下級之間,通常是它的上一級成為它的代理.
  • 步驟:
    • 1.定義協(xié)議
    • 2.定義代理屬性
    • 3.在.m文件當中調(diào)用代理方法
    • 4.設置代理
    • 5.遵守協(xié)議
    • 6.實現(xiàn)協(xié)議方法

23.ios當中存儲方式有哪些?

  • XML屬性列表(plist)
  • Preference(偏好設置)
  • NSKeyedArchiver,只有遵守NSCoding協(xié)議的對象才可以使用這種方式。
  • SQLite
  • Core Data

24.tableView性能優(yōu)化

  • 1.tableView的緩存機制.
  • 2.在不等高Cell當中,提前計算Cell的行高.提前估一個行高.200-250
  • 3.如果說Cell當中有圓形圖片,圖片不要用ImageView加載layer.corneadius裁剪去做.會造成離屏渲染. 用繪圖Qurarzds裁剪,生成一張圓形的圖片.
  • 4.如果說圖片的寬高,指定為小數(shù)點.會造成鋸齒,造成鋸齒就會導致離屏渲染
  • 5.cell當中的ImageView的大小最好是跟UIImage是一樣大,如果不一樣大 它會對UIImage做形變操作.cell當中展示都是小圖.小圖的大小跟ImageView 點擊放大,是再去用大的ImageView加載大圖.
  • 6.做tableView的時候一定要用真機.
  • 7.如果是從網(wǎng)絡加載數(shù)據(jù),一定要放到子線程(異步加載)當中做.
  • 8.加載完畢的數(shù)據(jù)一定做本地緩存.
  • 9.cell當中不要動態(tài)的添加子控件.一般都在創(chuàng)建時,就把要出現(xiàn)的Cell給添加進去,暫時不要顯示的,可隱藏.
  • 10.盡量減少Cell內(nèi)部子控件的個數(shù).
  • 11.如果控件非常多,把不需要與用戶進行交互的控件.能過異步繪制出來.生成一張圖片.把圖片添加到cell當中
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末声畏,一起剝皮案震驚了整個濱河市撞叽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌插龄,老刑警劉巖愿棋,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異均牢,居然都是意外死亡糠雨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門徘跪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甘邀,“玉大人,你說我怎么就攤上這事垮庐∷尚埃” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵哨查,是天一觀的道長逗抑。 經(jīng)常有香客問我,道長寒亥,這世上最難降的妖魔是什么邮府? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮溉奕,結果婚禮上褂傀,老公的妹妹穿的比我還像新娘。我一直安慰自己腐宋,他們只是感情好紊服,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布檀轨。 她就那樣靜靜地躺著,像睡著了一般欺嗤。 火紅的嫁衣襯著肌膚如雪参萄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天煎饼,我揣著相機與錄音讹挎,去河邊找鬼。 笑死吆玖,一個胖子當著我的面吹牛筒溃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沾乘,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼怜奖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了翅阵?” 一聲冷哼從身側(cè)響起歪玲,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎掷匠,沒想到半個月后滥崩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡讹语,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年钙皮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片顽决。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡短条,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出擎值,到底是詐尸還是另有隱情慌烧,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布鸠儿,位于F島的核電站屹蚊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏进每。R本人自食惡果不足惜汹粤,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望田晚。 院中可真熱鬧嘱兼,春花似錦、人聲如沸贤徒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至踢涌,卻和暖如春通孽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背睁壁。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工背苦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人潘明。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓行剂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親钳降。 傳聞我的和親對象是個殘疾皇子厚宰,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 該文章屬于<簡書 — Timhbw>原創(chuàng),轉(zhuǎn)載請注明: <簡書社區(qū) — Timhbw>http://www.jia...
    伯虔閱讀 13,513評論 8 140
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,111評論 1 32
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結構(3).初始化時...
    歐辰_OSR閱讀 29,417評論 8 265
  • 一方荷塘 群山環(huán)抱 密密魚群 追逐嬉鬧 沉水聞耦 浮水問荷 無欲無求 盡情逍遙
    國勝閱讀 254評論 0 0
  • 國慶節(jié)前三天都加班遂填,明天終于放假啦固阁,而且明天是中秋節(jié)喔。不過我還沒有想好做什么城菊,我想沒什么事的話就待在廣州做一下純...
    Richard1015閱讀 253評論 0 0