iOS面試題2
1、RunLoop是什麼。
一個RunLoop就是一個時間處理的迴圈,用來不停的調度工作以及處理輸入時間。
使用runloop的目的是讓你的線程在有工作的時候忙於工作,而沒工作的時候處於休眠狀態。runloop的設計是為了減少cpu無謂的空轉。
2、iOS中四種執行個體變數的範圍類型@private @protected @public @package
@private(私人的)
執行個體變數只能被聲明它的類訪問
@protected(受保護的)
執行個體變數能被聲明它的類和子類訪問,所有沒有顯式制定範圍的執行個體變數都是@protected
@public(公開的)
執行個體變數可以被在任何地方訪問
@package(架構層級的)
範圍介於私人和公開之間,只要處於同一個架構中就可以直接通過變數名訪問。
3、談一談對響應鏈的認識。
當事件發生的時候,響應鏈首先被發送給第一個響應者(往往是事件發生的視圖,也就是使用者觸控螢幕幕的地方)。
事件將沿著響應者鏈一直向下傳遞,直到被接受並作出處理。
一般來說,第一響應這是個視圖對象或者其子類,當其被觸摸後事件就交由它處理,如果他不處理,時間就會被傳遞給視圖控制器對象UIViewController(如果存在),然後是它的父視圖對象(superview),以此類推知道頂層視圖。
接下來會沿著頂層視圖(top view)到視窗(UIwindow 對象)
再到程式的(UIApplication對象),如果整個過程都沒有響應這個事件,則該事件被丟棄,
一般情況下,在響應鏈中只要有對象處理事件,事件就會被傳遞。
典型的響應路線圖如:
First Responser --> The Window -->The Applicationn --> App Delegate
4、#import、#include和@class有什麼區別。
#include c語言中引入一個標頭檔,但是可能出現交叉編譯
#import不會出現交叉編譯
#import在OC中引入自己建立的標頭檔#import””
或者系統架構#import<>。
@class對一個類進行聲明,告訴編譯器有這個類,但是類的定義什麼的都不知道
5、What is lazy loading?什麼是懶載入。
在使用的時候才去初始化,比如UITableViewCell的imageView屬性,懶載入對象的建立是在setter方法裡面進行建立的。
著作權聲明:本文由http://www.bestnathan.com/原創,歡迎轉載分享。請尊重作者勞動,轉載時保留該聲明和作者部落格連結,謝謝