1.除了MVC模式 你還熟悉什麼設計模式ios
代理模式:當一個類的某些功能須要由別的類實現,可是又不肯定具體是哪一個類實現的算法
單例模式:確保程序運行期,某個類只有一份實例,用於進行資源共享sql
工廠模式:工廠模式建立的實例,多與proxy模式配合,建立可替代的類,通常用於基礎控件的建立數據庫
觀察者模式:通常爲model層,對controller和view進行通知,不關心誰接收,只負責發佈消息設計模式
策略模式:定義算法,封裝起來,使他們之間可相互替換服務器
2.線程和進程的區別與聯繫?談談多線程。session
(1)一個線程只屬於有一個進程,而一個進程能夠有多個線程,至少有一個線程多線程
(2)資源分配給進程,統一進程的全部線程共享該進程的全部資源app
(3)處理機分給線程,即真正在處理機上運行的是線程dom
3.你在開發項目中,用到了那些數據存儲方式,ios中常見的方式有哪幾種?
(1)歸檔 :採用歸檔的形式來保存數據,該數據對象須要 遵照NSCoding協議,而且該對象對應的類必須提供encodeWithCoder:和initWithCoder:方法。前一個方法告訴系統怎麼對對象進行編碼,然後一個方法則是告訴系統怎麼對對象進行解碼。例如對Possession對象歸檔保存。
(2)NSUserDefault:用來保存應用程序設置和屬性、用戶保存的數 據。用戶再次打開程序或開機後這些數據仍然存在。NSUserDefaults能夠存儲的數據類型包括:NSData、NSString、 NSNumber、NSDate、NSArray、NSDictionary。若是要存儲其餘類型,則須要轉換爲前面的類型,才能用NSUserDefaults存儲。
(3)write寫入,永久保存在磁盤中:具體方法爲:第一步:得到文件即將保存的路徑:NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);//使用C函數NSSearchPathForDirectoriesInDomains來得到沙盒中目錄 的全路徑。該函數有三個參數,目錄類型、he domain mask、布爾值。其中布爾值表示是否須要經過~擴展路徑。並且第一個參數是不變的,即爲NSSearchPathDirectory 。在IOS中後兩個參數也是不變的,即爲:NSUserDomainMask 和 YES。NSString *ourDocumentPath =[documentPaths objectAtIndex:0];
(4)sqlite數據庫:第一步:須要添加SQLite相關的庫以及頭文件:在項目文件的Build Phases下,找到Link Binary Library(ies),添加libsqlite3.0.dylib;在項目文件中頭文件或者源文件中添加頭文件#import 「/usr/include/sqlite3.h」第二步:開始使用SQLite:使用前注意:若是不往數據庫裏面添加任何的表,這個數據庫等於沒有創建,不會在硬盤上產生任何文件,若是數據庫已經存在,則會打開這個數據庫。
4.arc的程序出現內存泄露怎麼辦
用ARC的,只是編譯器幫你管理合適release、retain,不用ARC就須要你本身去管理,說到底就是誰去管理的問題,若是實在找不到問題,建議你找到內存泄露的那個對象,將其賦值爲nil,由於在ARC中,一旦對象沒有指針指向,就會立刻釋放
5.❤️簡述一下iOS應用開發流程
(1)產品經理作需求調研,肯定產品需求,編寫需求文檔
(2)產品人員完成產品原型
(3)產品經理召開會議(產品,uI,開發,測試,服務器)
(4)服務器與客戶端成員一塊兒制定接口文檔
(5)項目經理制定開發進度,分配任務,預算開發週期
(6)移動客戶端開發人員根據UI界面和需求文檔,開始編碼,開發模塊上的功能
(7)開發者完成開發後提交給測試
(8)測試部分完畢,提交給產品經理,驗收產品
(9)提交到appstore