iOS 面試題 (四)

  1. 什麼是序列化和反序列化,可以用來做什麼?如何在OC中實現複雜對象的存儲?
     把對象轉換爲字節序列的過程稱爲對象的序列化
     把字節序列恢復爲對象的過程稱爲對象的反序列化
     可以用來將對象寫到文件或者數據庫裏,並且可以讀取出來 ;
     遵循NSCoding協議,來實現複雜對象的存儲
     實現該協議後就可以對其進行打包或者解包,然後轉化爲NSData

2   寫一個標準宏MIN,這個宏輸入兩個參數並返回較小的一個?
 #define MIN(A,B) ((A) <= (B)?(A) : (B))

   延展問題:寫宏的時候要注意些什麼問題呢?
<span style="font-size:18px;">  函數宏後面的參數都要用括號單獨括起來,函數名大寫</span>
<span style="font-size:18px;">  #define A 20</span>

3   iphone os有沒有垃圾回收機制?簡單闡述一下OC內存管理。
   沒有垃圾回收機制      OC中內存管理機制是引用計數的增減,returnCount爲0時釋放內存 

4   簡述應用程序按Home鍵進入後臺時的生命週期,以及從後臺回到前臺時的生命週期?
   啓動程序

lifeCycle[40428:11303] willFinishLaunchingWithOptions
lifeCycle[40428:11303] didFinishLaunchingWithOptions
lifeCycle[40428:11303] applicationDidBecomeActive

按下home鍵 

lifeCycle[40428:11303] applicationWillResignActive
lifeCycle[40428:11303] applicationDidEnterBackground

執行的方法是- (void) applicationWillResignAction:(UIApplication *)application;

                 -(void)applicationDidEnterBackground:(UIApplication *)application;

雙擊home鍵,再打開程序

lifeCycle[40428:11303] applicationWillEnterForeground
lifeCycle[40428:11303] applicationDidBecomeActive

執行的方法是  - (void)applicationWillEnterForeground:(UIApplication *)application

                     -(void)applicationDidBecomeAction:(UIApplication *)application;



5  ViewController 的 alloc,loadView, viewDidLoad,viewWillAppear,viewDidUnload,dealloc、init分別是在什麼時候調用的?在自定義ViewController的時候這幾個函數裏面應該做什麼工作?

int 在初始化實例對象時調用

初始化viewController本身;

alloc  申請內存時調用

爲viewController申請內存空間;

loadView 在每次訪問UIViewController的view(比如 controller.view self.view)而且view爲nil,loadView方法會被調用。不要直接調用該方法

如果手工維護views,必須重載重寫該方法

如果使用IB維護views,必須不能重載重寫該方法

這個方法就是給我們自定義UIViewController的view 還有IB構建view用的;

viewDidLoad  重載重寫該方法進一步定製view

在iPhone OS 3.0及之後的版本中,還應該重載重寫viewDidUnload來釋放對view的任何索引

viewDidLoad後調用數據Model;

viewWillAppear 視圖將要出現的時候調用

做數據刷新等工作;

viewDidUnload 在發出內存警告並且view被釋放的時候調用  iOS6 中廢除了  之後收到內存警告在下面的方法中進行處理

didReceiveMemoryWarning 當應用程序的內存使用接近系統最大的內存使用時,應用程序向系統發送警告;這時系統會調用方法向所有的viewController發送內存警告 可在這個方法裏釋放界面元素相關的資源,將相關的實例都賦值nil

dealloc 在ViewController被釋放的時候調用

銷燬ViewController


發佈了58 篇原創文章 · 獲贊 5 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章