首發:我的博客,更新&糾錯&回覆javascript
代碼在這裏,對git仍是使用不熟練,好在github新建項目後體貼地提示是否是要執行這樣兩句——php
這兩句我確定是背不住的,因此記一下。css
git remote add origin https://github.com/qidafang/iOS_427studio.git
git push -u origin masterhtml
思而勤工做室的手機app,ios版開發比android還順利一點,記錄一下用到的知識:java
1)表現層android
故事板作界面+controller類,用着很舒服的組合。並且基礎庫自帶了標籤結構和導航結構。ios
界面拖拽式生成,controller中的兩大關鍵元素(表明界面元素對象的實例屬性、響應界面元素操做的實例方法)也拖拽生成。git
簡便到如此,以致於嫌controller過於簡潔了,乾脆讓它實現界面元素的數據源接口和代理接口,爲了實現相應方法,對應該元素數據的集合對象也必須是controller的實例屬性了,固然這也是天經地義,controller持有model是理所固然的。程序員
界面組件,標籤按鈕文本框的使用就不說了,webview分別演示了指定html和指定url兩種用法。github
2)rest
由於實例簡單,省去業務邏輯層,直接說數據層。固然,數據層指的不是狹義的「關係型數據庫」,而是廣義的與全部形式數據源打交道都算,在這個項目裏分紅兩部分:rest和dao,分別用於與服務器和本地數據庫打交道。
由於rest類的異步使用方法是在回調函數裏進行後續動做,而「後續動做」是對界面進行修改,好比從服務器上抓取數據來填充界面上的列表,因此rest層類須要持有controller類的對象,在回調函數中好修改controller類的屬性(即表明頁面數據的model屬性)、調用controller對象的方法(如讓表格從新加載內容的reload方法)。
從分層角度看,這種「下層類瞭解上層類的存在」是不合理的,更合理的應該是controller實現某個接口例如RestCaller,該接口定義一個onRestOk(data:NSObject)這樣的函數,controller實現的該方法體從data中得到rest傳來的數據,而後執行邏輯;rest類聲明一個var caller:RestCaller實例變量,在回調函數中調用該caller.onRestOk(有用的數據);controller類使用rest類時即這樣:
let rest:SomeRest = SomeRest();
rest.caller = self;
rest.doQuery(xxxx);
這是一種解耦的思路,因爲時間就不實現了。至於http請求、json處理,這些基礎類庫的使用也不說了。
3)dao
雖然項目是用swift寫的,但在dao這塊仍是不得不用objective-c,讓我很高興objective-c的學習仍是有用。不過除此以外想一想,倆語言不得不混用實在不是好事。
由於用的是基礎語法,很是相似java的jdbc那一套,打開鏈接,準備sql,賦予參數,執行,遍歷結果什麼的,不用多說。用到的全局函數相似php的用法,面向對象程序員看了,優越感油然而生。
示例程序是列表的增刪改查,與android相似,列表是基礎庫,單元格自行實現,單元格對象須要持有數據,由於在點擊格里刪改按鈕時須要知道點的是哪一行,刪除以後確定須要讓controller刷新數據,因此讓單元格對象持有了controller的引用(爲了省事還讓它持有了dao單例)。在增改打開表單頁面的時候,須要在表單controller知道本身是增仍是改,並且持有要改的對象的數據,這都是最理所固然的了。
4)總結
有了上面1)2)3)這三樣技術,綜合使用就「運用之妙,存乎一心」了,由於是練手,沒有進行形而上的設計和封裝,好比提煉基礎類和接口。對小項目來講,可能降級到粗淺一點的抽象級別還更舒服一些,殺牛用殺牛刀,殺雞用殺雞刀。
這就像當servlet和jdbc(再加上基礎html,css,javascript)會用了以後,剩下的都是錦上添花的進步,以後的進步的最大收穫在設計和思想上。而我我的由於有java的長期訓練,卻是不須要作「在ios上花大量時間練習來進步到有思想的境界」這一工做(笑),畢竟像《企業應用架構模式》之類的書的偉大,不是僅僅限於某個語言和某個領域的,幸運的是這些書我讀過(我的書單)。
這一個月左右(總時間超過一個月,但淨時間不到)不算短,也不算長,畢竟是兩種語言、好幾本書、全新的操做系統(mac很差用!)和ide。雖然不算長,也到此爲止了,由於據愛老師說混合開發是主流,那ios原生技術瞭解到基礎,而且有能力隨時學習別的基礎,就足夠了,之後用混合開發的時候,不至於迷惑:「哎呀我不懂ios原生開發,搞混合開發有點摸黑。」。
最後上個圖~