iOS面試題-第二頁

11.深拷貝和淺拷貝的理解.

深拷貝;拷貝的內容.

淺拷貝:拷貝的指針.

深拷貝如:

NSMutableDictionary? * dic = [@{} mutableCopy];

NSMutableArray? * ary = [@[] mutableCopy];

12.怎么實現一個singleton的類.

單例是一種設計模式,對象只有一個.缺點:對象不會被釋放,如果創建很多的話會占用很多內存,優點:可以當做工具類使用.

static SortDetailsModelDown * single = nil;

+(SortDetailsModelDown *)shareSortDetailsModelDown{

@synchronized(self){

if (!single) {

single = [[SortDetailsModelDown alloc]init];

}

}

return single;

}

13.什么是安全釋放?

先釋放再置空.

14.RunLoop是什么?

事件循環,是線程里面的一個組件.主線程的RunLoop是自動開啟的.分為:計時源(timer source),事件源(輸入源):input source.防止CPU中斷(保證程序執行的線程不會被系統終止).

Runloop提供了一種異步執行代碼的機制,并不能并行執行任務,是事件接收和分發機制的一個實現.每一個線程都有其對應的RunLoop,但是默認非主線程的RunLoop是沒有運行的,需要為RunLoop添加至少一個事件源,然后run它.

一般情況下我們是沒有必要去啟動線程的RunLoop的,除非你在一個單獨的線程中需要長時間的檢測某個事件.

RunLoop,正如其名所示,是線程進入和被線程用來響應事件以及調用事件處理函數的地方.

input source傳遞異步事件,通常是來自其他線程和不同程序的消息.

timer source傳遞同步事件.

當有事件發生時,RunLoop會根據具體的事件類型通知應用程序作出響應.

當沒有事件發生時,RunLoop會進入休眠狀態,從而到達省電的目的.

當事件再次發生時,RunLoop會被重新喚醒,處理事件.

一般在開發中很少會主動創建RunLoop,而通常會把事件添加到RunLoop中.

15.什么是序列化和反序列化,可以用來做什么?如何在OC中實現復雜對象的存儲.

序列化和反序列化:歸檔和反歸檔,進行本地化,進行數據存儲.

CoreData:數據托管.有四種存儲方式:xml,sqlite,二進制,內存.

遵循NSCoding協議之后,進行歸檔即可實現復雜對象的存儲.

16.寫一個標準宏MIN,這個宏輸入兩個參數并返回較小的一個.

#define MIN(A,B) (A)>(B)?(B):(A)

17.iPhone OS 有沒有垃圾回收機制,簡易闡述一下OC內存管理.

木有.引用計數,ARC和MRC,swift(自動引用計數).

18.簡述應用程序按HOME鍵進入后臺時的生命周期,以及從后臺進入前臺時的生命周期.

前者:- (void)applicationWillResignActive:(UIApplication *)application

- (void)applicationDidEnterBackground:(UIApplication *)application

后者:- (void)applicationWillEnterForeground:(UIApplication *)application

- (void)applicationDidBecomeActive:(UIApplication *)application

另:

各個程序運行狀態時代理的回調:

- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions

告訴代理進程啟動但還沒進入狀態保存

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

告訴代理啟動基本完成程序準備開始運行

- (void)applicationWillResignActive:(UIApplication *)application

當應用程序將要入非活動狀態執行,在此期間,應用程序不接收消息或事件,比如來電話了

- (void)applicationDidBecomeActive:(UIApplication *)application

當應用程序入活動狀態執行,這個剛好跟上面那個方法相反

- (void)applicationDidEnterBackground:(UIApplication *)application

當程序被推送到后臺的時候調用。所以要設置后臺繼續運行,則在這個函數里面設置即可

- (void)applicationWillEnterForeground:(UIApplication *)application

當程序從后臺將要重新回到前臺時候調用,這個剛好跟上面的那個方法相反。

- (void)applicationWillTerminate:(UIApplication *)application

當程序將要退出是被調用,通常是用來保存數據和一些退出前的清理工作。這個需要要設置UIApplicationExitsOnSuspend的鍵值。

- (void)applicationDidFinishLaunching:(UIApplication*)application

當程序載入后執行

在上面8個方法對應的方法中鍵入NSLog打印。

現在啟動程序看看執行的順序:

啟動程序

lifeCycle[40428:11303] willFinishLaunchingWithOptions

lifeCycle[40428:11303] didFinishLaunchingWithOptions

lifeCycle[40428:11303] applicationDidBecomeActive

按下home鍵

lifeCycle[40428:11303] applicationWillResignActive

lifeCycle[40428:11303] applicationDidEnterBackground

雙擊home鍵,再打開程序

lifeCycle[40428:11303] applicationWillEnterForeground

lifeCycle[40428:11303] applicationDidBecomeActive

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

alloc:申請內存時調用.

loadView:加載視圖時調用.

viewDidLoad;視圖已經加載后調用.

viewWillAppear:視圖將要出現時調用.

viewDidUnload:視圖已經加載但是沒有加載出來時調用.

dealloc:銷毀該視圖時調用.

init;初始化該視圖時調用.

20.描述應用程序的啟動順序.

a.程序入口main函數創建UIApplication實例和UIApplication代理實例.

b.在UIApplication代理實例中重寫啟動方法,設置根ViewController

c.在第一ViewController中添加控件,實現應用程序界面.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,345評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,494評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,283評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,953評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,714評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,410評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,940評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,776評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,210評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,654評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內容

  • 父類實現深拷貝時,子類如何實現深度拷貝。父類沒有實現深拷貝時,子類如何實現深度拷貝。? 深拷貝同淺拷貝的區別:淺拷...
    JonesCxy閱讀 1,039評論 1 7
  • ? 深拷貝同淺拷貝的區別:淺拷貝是指針拷貝,對一個對象進行淺拷貝,相當于對指向對象的指針進行復制,產生一個新的指向...
    WSGNSLog閱讀 1,275評論 0 1
  • iOS面試準備 基礎 1. 為什么說Objective-C是一門動態的語言? 編譯期:即編譯器對語言的編譯階段,編...
    LemonFan閱讀 575評論 0 1
  • 基礎 1. 為什么說Objective-C是一門動態的語言? 2. 講一下MVC和MVVM,MVP? 3. 為...
    波妞和醬豆子閱讀 3,346評論 0 46
  • 當你難受時在你身邊的不一定是你的家人,而是你身邊的朋友。朋友之間的交流不需要小心翼翼,只需要真心。到你不能將真心變...
    姜雷_24b1閱讀 128評論 0 0