1.Cocoa框架:
Cocoa是OS X和?iOS操作系統(tǒng)的程序的運行環(huán)境。
是什么因素使一個程序成為Cocoa程序呢?不是編程語言,因為在Cocoa開發(fā)中你可以使用各種語言;也不是開發(fā)工具,你可以在命令行上就可以創(chuàng)建Cocoa程序。Cocoa程序可以這么說,它是由一些對象組成,而這些對象的類最后都是繼承于它們的根類?:NSObject。而且它們都是基于Objective-C運行環(huán)境的。
iOS中,Cocoa眾多框架中最重要最基本的兩個框架是:Foundation?和?UIKit。
Foundation?和界面無關(guān),也可以說和界面無關(guān)的類基本是Foundation框架的,和界面相關(guān)的是UIKit框架。
這兩個框架在系統(tǒng)中處于的位置如圖:
Foundation框架:
UIKit框架:
2.React框架:
React是臉書為Web端開發(fā)的一個開源框架。
React Native是臉書為移動端跨平臺開發(fā)的一個開源框架。
3.主要設(shè)計模式:
https://www.cnblogs.com/wangbinios/p/7882082.html
4.網(wǎng)絡開發(fā)相關(guān)技術(shù),如?Socket,HTTP,REST:
WEB使用HTTP作傳輸層協(xié)議,以封裝HTTP文本信息,然后使用TCP/IP做傳輸層協(xié)議將它發(fā)送到網(wǎng)絡上。Socket是對TCP/IP協(xié)議的封裝,Socket本身并不是協(xié)議,而是一個調(diào)用接口(API),通過Socket,我們才能使用TCP/IP協(xié)議。
iOS可以利用第三方框架CocoaAsyncSocket實現(xiàn)Scocket
iOS可以利用第三方框架SocketRocket實現(xiàn)webSocket
REST式的服務最重要的三個特征就是**無狀態(tài)性**(statelessness)、**統(tǒng)一資源定位**(uniform resource identification)和**可緩存性**(cacheability)。
REST式服務總是無狀態(tài)的。每次API調(diào)用都被視作新的請求,服務器并不會記錄客戶端上下文??蛻舳诵枰S護服務器的狀態(tài),包括但不限于緩存服務器響應(response)和登錄訪問令牌(login access token)。
REST式服務的資源定位是通過URL實現(xiàn)的。REST不使用資源ID作為參數(shù),而是將它作為URL的一部分。例如,http://example.com/resource?id=1234REST服務中就變成了http://example.com/resources/1234。在
REST式服務使用這種方式進行資源定位,而且也不維護客戶端狀態(tài),這就使客戶端可以根據(jù)URL緩存響應,就像瀏覽器緩存網(wǎng)頁一樣。
REST式服務的響應通常以一種統(tǒng)一的、雙方一致同意的格式返回給客戶端,這樣可以更好地對客戶端接口和服務器接口進行解耦。客戶端的iOS應用使用雙方一致同意的數(shù)據(jù)交換格式與RESTful服務器進行通信。到目前為止,最常用的格式是XML和JSON。
5.數(shù)據(jù)存儲相關(guān)技術(shù):
XML屬性列表(plist)歸檔
Preference(偏好設(shè)置)
NSKeyedArchiver歸檔(NSCoding)?//?所謂歸檔,是一個過程,即用某種格式來保存一個或者多個對象,以便以后還原這些對象。
特點:
1> 可以存儲自定義模型對象,NSKeyedArchiver歸檔相對較plist存儲而言,它可以直接存儲自定義模型對象,而plist文件需要將模型轉(zhuǎn)為字典才可以存儲自定義對象模型;
2> 歸檔不能存儲大批量數(shù)據(jù)(相比較Sqlite而言),存儲數(shù)據(jù)到文件是將所有的數(shù)據(jù)一下子存儲到文件中,從文件中讀取數(shù)據(jù)也是一下子讀取所有的數(shù)據(jù);
缺點:
1> 假如你的文件中有100個對象了,然后你想在利用歸檔添加一個對象,你需要先把所有的數(shù)據(jù)解檔出來,然后再加入你想添加的那個對象,同理,你想刪除一個文件中的一個對象也是,需要解檔出所有的對象,然后將其刪除。性能低這樣處理
2> 基本使用:需要歸檔的模型類必須要遵守NSCoding協(xié)議,然后模型實現(xiàn)類中必須實現(xiàn)兩個方法:1>encodeWithCoder ->?歸檔;2> initWithCoder:?- >?解檔
SQLite3
Core Data
6.面向接口開發(fā)模式:
objc是一門面向?qū)ο蟮恼Z言,面向?qū)ο笠步o我們平時帶來了很多的方便。然而很多情況下面向?qū)ο笠灿凶约旱木窒扌?,濫用繼承多態(tài)可能會埋下很多坑。
在實際采用多態(tài)的時候會有下面四種情況:
父類有部分public的方法是不需要,也不允許子類覆重
父類有一些特別的方法是必須要子類去覆重的,在父類的方法其實是個空方法
父類有一些方法是可選覆重的,一旦覆重,則以子類為準
父類有一些方法即便被覆重,父類原方法還是要執(zhí)行的
父類有一些方法即便被覆重,父類原方法還是要執(zhí)行的
因為我們規(guī)定了父類方法不可以被覆蓋重載,只能通過接口實現(xiàn)的方式來寫.
參考鏈接:?https://casatwy.com/tiao-chu-mian-xiang-dui-xiang-si-xiang-er-duo-tai.html
7.Git?版本控制工具和缺陷跟蹤系統(tǒng):
git add .
git commit -m?‘initial commit’
git push
git pull
題外話:一般在開發(fā)中,多人合作開發(fā)的時候,版本控制非常重要,所以一定要有穩(wěn)定的主分支Master,開發(fā)功能的分支developer,預發(fā)布的分支release這三個重要分支。每次有新功能和需求的時候每個開發(fā)人員就從developer分支分別拉取項目開發(fā),最后合并入developer,功能完成后就并入release,修改bug時在release分支操作,修復完成后分別并入Master和developer分支,最后從Master分支拉取最終的代碼打包上傳APP Store。
項目管理和缺陷跟蹤工具——Redmine