1. 程式人生 > >19、iOS面試題·自整理·Three

19、iOS面試題·自整理·Three

-c 得到 設計 ica oschina 參數 dexp 不能 整理

1.請簡述你對工廠方法的理解?

工廠Mycontrol,設計控件是用到工廠設計模式。類簇類似於工廠設計模式;工廠模式就是定義創建對象的接口,讓子類決定實例化哪一個類。這樣,類的實例化就推遲到了子類

2.UITableView有哪些優化方式?

UITableView的優化主要從三個方面入手:

? 提前計算並緩存好高度(布局),因為heightForRowAtIndexPath:是調用最頻繁的方法;

? 異步繪制,遇到復雜界面,遇到性能瓶頸時,可能就是突破口;

? 滑動時按需加載,這個在大量圖片展示,網絡加載的時候很管用!(SDWebImage已經實現異步加載,配合這條性能杠杠的)。

3.你如何理解blockblock有什麽用途?

? 我們可以把Block當做Objective-C的匿名函數。Block允許開發者在兩個對象之間將任意的語句當做數據進行傳遞,往往這要比引用定義在別處的函數直觀。另外,block的實現具有封閉性(closure),而又能夠很容易獲取上下文的相關狀態信息。

? block是代碼塊,其本質和變量類似。不同的是代碼塊存儲的數據是一個函數體。使用Block,就可以像其他標準函數一樣,傳入參數,並得到返回值。

作為OC對象的屬性,實現對象之間的傳值 ? Block可以看做是一個變量,因此可以作為OC對象的屬性

4.請問怎樣能夠保證定位更省電?

1.開啟開始定位之後,不關閉,讓其持續定位

2.設置距離篩選器:坐標移動到指定距離才會調用代理方法

3.設置精準度:通過降低計算的過程(GPS),來達到省電的目的

5.請簡述NSUserDefaults的使用場景和 使用註意事項?

SUserDefaults適合存儲輕量級的數據,他不僅可以存儲基本數據類型,還可以存儲NSNumberIntegerFloatDouble),NSStringNSDateNSArrayNSDictionaryBOOL類型。

但是NSUserDefaults不能存儲自定義的類對象,若把一個對象存儲到NSUserDefaults會報錯。聰明的人會把對象放進數組,再把數組存入NSUserDefaults,不過這樣做事錯誤的,因為數組中包含了自定義對象。

若要在NSUserDefaults中存入自定義對象,則對象需要遵循NSCoding協議,並實現encodeWithCoder方法和initWithCoder方法。具體參考http://my.oschina.NET/u/1245365/blog/294449

值得一提的是,我發現類型為NSNull的空數據也是無法存入NSUserDefaults的。若數據中有NSNull類型空數據,把它置nil即可存入NSUserDefaults

總之,NSUserDefaults是一種操作簡單的數據庫

6.iOS中數據庫使用什麽技術實現的 ?

使用SqliteCoreData實現的

7.iOS中如何實現數據模型的存儲?

歸檔也是iOS提供給開發者的一種數據存儲的方式,事實上,幾乎所有的數據類型都可以通過歸檔來進行存取。其存儲與讀取的過程,主要封裝在兩個類中:NSKeyedArchiverNSKeyedUnarchiver

19、iOS面試題·自整理·Three