iOS基礎問答面試

來源:互聯網
上載者:User

標籤:產生   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

  • 以下是一些自己收集的比較基礎的問題(大神可以忽略),附上答案,方便大家閱讀。俗話說得好,基礎不牢,地動山搖。文章末尾會提供PDF版的文檔,方便大家木有網的時候也可以用行動裝置觀看。

1.xcode5和xcode7區別?
  • xcode7沒有Frameworks檔案夾,xcode7內部會自動幫你匯入一些常見的架構.

  • xcode7多了LaunchScreen.xib,LaunchScreen.xib設定啟動介面,而且可以確定模擬器或者真機的真實尺寸,如果沒有設定,預設4s的尺寸(320,480)

  • xcode7沒有pch檔案

  • xcode5當中也有info.plist,只不過它的名字很長.是工程的名稱.

2.pch檔案原理?
  • 把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.手動建立視窗的步驟?
  • 1.建立視窗,要有視窗顯示,必須要有強引用.視窗也是控制項,要想展示出來.必須得要有尺寸.

  • 2.建立控制器

  • 3.設定控制器為視窗的根控制器

  • 4.顯示視窗

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做了哪些事情?
  • 當調用push方法時, 會把要push的控制器添加到導航控制器管理的棧中,把之前置航控制器中棧頂控制器View給移除,把當前棧頂控制器添加上去.

15.導航pop做了哪些事情?
  • 當調用pop方法時, 會把要pop的控制器從棧裡移除,把之前置航控制器中棧頂控制器View給移除,把當前棧頂控制器添加上去.

16.如何設定導航條的內容?
  • 導航條的內容由導航控制器的棧頂控制器的NavigationItem決定.

17.導航控制器pop操作有哪些?
  • 返回上一級

  • 返回到根控制器

  • 返回到指定的控制器.

18.文字框如何攔截使用者輸入?
  • 給指定的檔案框,設定代理 ,實現代理方法.裡麵包括是否允許開始編輯,是否允許結束編輯,是否允許改變字元等等.

19.如何自訂鍵盤?
  • 自訂鍵盤,要繼承系統的UITextField,設定文字框的一個屬性,該屬性名稱為inputView.這樣就可以把鍵盤定義成自己要想的View.

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

21.自動跳轉與手動型跳轉區別?
  • 自動跳轉:通過控制項直接拖線的方式進行跳轉

  • 手動跳轉:在跳轉之前要去做一些處理工作. 必須得要執行performSegueWithIdentifier:才能跳轉.

22.什麼時候使用代理 ,代理的步驟?
  • 當一個對象發生某一件事時,想要把自己的東西傳給別人.或是通知別人做某事使用代理.

  • 使用情境: 上下級之間,通常是它的上一級成為它的代理.

  • 步驟:

    • 1.定義協議

    • 2.定義代理屬性

    • 3.在.m檔案當中調用代理方法

    • 4.設定代理

    • 5.遵守協議

    • 6.實現協議方法

23.ios當中儲存方式有哪些?
  • XML屬性列表(plist)

  • Preference(喜好設定)

  • NSKeyedArchiver,只有遵守NSCoding協議的對象才可以使用這種方式。

  • SQLite

  • Core Data

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基礎問答面試

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.