ios 平時自己面試遇到的一些問題詳情,ios一些問題
記錄一下平時看到過的面試題,後面遇到好的再添加
一屬性的實質是什麼屬性預設的關鍵字都有哪些?atomic和nonatomic區別?@dynamic關鍵字和@synthesize關鍵字是用來做什麼的?
1 @property = ivar + getter + setter;@property 系統會自動產生setter和getter方法;
2readwrite(讀寫),readonly(唯讀),assign(不會使引用計數加1),retain(引用計數加1)
copy,nonatomic(非原子性訪問,多線程並發訪問會提高效能),atomic(原子訪問)
weak(相當於assign,可以把對應的指標變數置為nil)
3 atomic和nonatomic區別主要是在於系統產生的getter和setter方法不一樣,nonatomic的速度要比atomic快
atomic會給線程增加一個安全鎖,但是atomic並不能保證安全執行緒
4 dynamic和synthesize,前者不自動產生setter和getter由自己實現存取方法,後者編譯期間會讓編譯器自動產生setter/getter方法,當 有自訂的存或取方法時,自訂會屏蔽自動產生該方法
二 NSString一般關鍵字使用copy還是strong?為什嗎?
三 可變集合類 和 不可變集合類的 copy 和 mutablecopy有什麼區別?
四 進程和線程的區別?同步非同步區別?並行和並發的區別?
進程和線程的區別:一個程式至少有一個進程,一個進程至少有一個線程,進程是資源分派和擁有的單位,同一個進程內的線程共用進程資源。線程是處理器調度的基本單位。
並行和並發的區別:並發性:兩個和兩個以上的事件或活動在同一時間間隔內發生,並行性:是指兩個和兩個以上事件或活動在同一時刻發生
五 GCD的一些常用的函數
dispatch_async非同步執行隊列dispatch_sync 同步執行隊列 dispatch_get_main_queue全域串列dispatch_get_global_queue並發
六 資料持久化(FMDB)
七說一下AppDelegate的幾個方法?從後台到前台調用了哪些方法?第一次啟動調用了哪些方法?從前台到後台調用了哪些方法?
八 NSCache優於NSDictionary的幾點?
NSCache是一個容器,用於臨時儲存物件,NSCache中的key不用實現copy,儲存的對象也不必實現NSCoding協議,程式退出後就被釋放
九知不知道Designated Initializer?使用它的時候有什麼需要注意的問題?
十 如何捕捉導覽列系統返回鍵的點擊事件
- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPushItem:(UINavigationItem *)item; // called to push. return NO not to.
十一 是否使用過在一個類裡面定義多個類
十二 在cell的.m裡面如何擷取到cell所在的controller(通過UIResponder)
十三 對appdelegate的rootViewController進行過什麼操作(比如替換)
十四 類別與延展