一款完整的APP開發(fā)所需要的東西小編簡(jiǎn)要的概括為:前端界面回俐,服務(wù)器端開發(fā)镊绪,網(wǎng)絡(luò)傳輸以及線程邏輯夹攒。
本文小編主要列一個(gè)提綱,讓剛開始接觸的開發(fā)們找到一個(gè)基本方向邮府。讀者可以根據(jù)我的提綱去百度或者谷歌找到對(duì)應(yīng)的解決方案荧关。本文面向?qū)ο鬄閯傞_始學(xué)習(xí)Swift開發(fā)的程序員們,如果讀者您已經(jīng)是老司機(jī)了褂傀,可以基本略過忍啤。
? 開發(fā)的過程中你會(huì)用到大量的第三方庫。你需要了解Podfile, 以及podinstall的相關(guān)用法
前端界面
開發(fā)一款A(yù)PP紊服,你首先需要設(shè)計(jì)原型檀轨,一般是畫在紙上。它包括界面的基本結(jié)構(gòu)以及界面之間的基本邏輯欺嗤。
? 界面最基本的兩個(gè)要點(diǎn)是上端導(dǎo)航欄和下端按鈕欄参萄。基本的知識(shí)點(diǎn)包括:NavigationBarController, TabbarController煎饼。
? 你一般需要一個(gè)側(cè)邊欄讹挎,可以參考 SWRealViewController
? 你需要了解界面間參數(shù)傳遞方式,了解函數(shù)performsegue,對(duì)應(yīng)的重載函數(shù)prepare。著重要知道當(dāng)傳入界面有NavigationView的時(shí)候要先傳入navigationView再傳入對(duì)應(yīng)的界面吆玖。
? 要知道button可以通過tag以及title傳參
服務(wù)器端開發(fā)
為了實(shí)現(xiàn)數(shù)據(jù)持久化以及網(wǎng)絡(luò)交互筒溃,服務(wù)器端開發(fā)是無可避免的。服務(wù)器端開發(fā)有很多套解決方案:包括JAVAEE, C#與ASP.NET沾乘,Python與django;數(shù)據(jù)庫可以用oracle或者mysql怜奖。 我使用的方案是Python與Django配上mysql數(shù)據(jù)庫
? 首先你要有一臺(tái)服務(wù)器,可以再騰訊云或者阿里云租一臺(tái)翅阵。
? 騰訊云的服務(wù)器自帶centos系統(tǒng)歪玲,可以支持python,django及mysql環(huán)境掷匠±谋溃或者你可以自行裝linux系統(tǒng)。
? 服務(wù)器系統(tǒng)裝好之后安裝python讹语,django以及mysql钙皮。這是一個(gè)很折磨的過程,你會(huì)碰到各種各樣的BUG顽决,不要灰心不要喪氣短条,盡管你看不懂,但是才菠,你只要把它們復(fù)制下來百度一下或者谷歌一下就好慌烧,網(wǎng)上會(huì)有大量的解決方案。
? 裝好這些基本配置之后鸠儿,終于可以開始在服務(wù)器端寫代碼了。Django的教程里有基本的demo。
? 如果你的APP涉及到圖片開發(fā)进每,你需要對(duì)圖片進(jìn)行訪存汹粤。推薦使用七牛云作為圖片訪存空間,速度比較快
網(wǎng)絡(luò)傳輸
網(wǎng)絡(luò)傳輸說起來很玄乎田晚,實(shí)質(zhì)確很簡(jiǎn)單嘱兼。所有的網(wǎng)絡(luò)傳輸都是字符串(包括json,也是字符串的變形)贤徒。你的服務(wù)器是一串IP地址芹壕,例如:127.0.0.0.0。你運(yùn)行服務(wù)器的時(shí)候給他一個(gè)端口接奈,一般是8000踢涌。當(dāng)你在網(wǎng)址欄輸入127.0.0.0.0:8000的時(shí)候就是在運(yùn)行你這個(gè)項(xiàng)目。當(dāng)你輸入127.0.0.0.0:8000/index的時(shí)候就是調(diào)用你在Django里views里面編寫的index函數(shù)序宦。
? 在Swift中睁壁,有大量的關(guān)于Http的庫。包括SwiftHttp,Alamofile等互捌,你可以根據(jù)自己的喜好選擇對(duì)應(yīng)的庫潘明。
? 關(guān)于Json數(shù)據(jù)解析,有TRON秕噪,SwiftyJson等庫
線程邏輯
涉及到Http開發(fā)钳降,就不可避免的會(huì)遇到線程問題。舉個(gè)例子:你通常需要等待Http傳輸數(shù)據(jù)回來腌巾,再更新UI遂填。很簡(jiǎn)單的邏輯就涉及到線程問題。程序不會(huì)自己去等待Http傳輸壤躲,會(huì)將其放入子進(jìn)程城菊。這時(shí)候如果不做任何處理,就會(huì)發(fā)現(xiàn)你的UI沒有更新碉克,因?yàn)槌绦蛟诘却倪^程中已經(jīng)做了更新UI的操作凌唬,這時(shí)候數(shù)據(jù)沒有回來,等于沒有更新漏麦。線程的問題你需要了解Dispatch的問題客税,在Swift中稱為GCD。百度一下撕贞,或者谷歌一下這兩個(gè)關(guān)鍵詞(dispatch,gcd)更耻,你會(huì)學(xué)到很多。但是捏膨,可能仍會(huì)困擾秧均,會(huì)有坑沒有解決食侮。后期我會(huì)寫一個(gè)關(guān)于線程的demo來說明我遇到,你也可能會(huì)遇到的坑目胡。
上面我列舉的每一個(gè)點(diǎn)锯七,都需要耗費(fèi)一定的時(shí)間去消化吸收,快的可能4-6個(gè)工作時(shí)誉己,慢的可能消耗2-3個(gè)工作日眉尸。 但至少方向是正確的。 最后提一點(diǎn)巨双, 希望開發(fā)者們?cè)谟龅絾栴}時(shí)噪猾,先不要急著自己想法子解決,先谷歌一下筑累,去github袱蜡,stackoverflow看一下,99%的問題別人都碰到并且解決過疼阔。不要覺得你的需求比較奇葩戒劫,相信我,世界之大婆廊,無奇不有迅细。當(dāng)你想實(shí)現(xiàn)一個(gè)功能時(shí),先上網(wǎng)看看有沒有現(xiàn)成的第三方庫淘邻,不要重復(fù)造輪子茵典。
最后的最后,感謝一下在我開發(fā)過程中給予我許多幫助的人
同濟(jì)大學(xué)軟件學(xué)院 著名講師:朱宏明老師
同濟(jì)大學(xué)軟件學(xué)院優(yōu)秀畢業(yè)生:杜博聞大神
同濟(jì)大學(xué)軟件學(xué)院優(yōu)秀在校生:李陽大神
以及最后我的傻兒子室友:周以恒同學(xué)