iOS的第一個習作

來源:互聯網
上載者:User

標籤:

首發:個人部落格,更新&錯誤修正&回複

代碼在這裡,對git還是使用不熟練,好在github建立項目後體貼地提示是不是要執行這樣兩句——

這兩句我肯定是背不住的,所以記一下。

git remote add origin https://github.com/qidafang/iOS_427studio.git
git push -u origin master

思而勤工作室的手機app,ios版開發比android還順利一點,記錄一下用到的知識:

1)表現層

故事板做介面+controller類,用著很舒服的組合。而且基礎庫內建了標籤結構和導航結構。

介面拖拽式產生,controller中的兩大關鍵元素(代表介面元素對象的執行個體屬性、響應介面元素操作的執行個體方法)也拖拽產生。

簡便到如此,以至於嫌controller過於簡潔了,乾脆讓它實現介面元素的資料來源介面和代理介面,為了實現相應方法,對應該元素資料的集合對象也必須是controller的執行個體屬性了,當然這也是天經地義,controller持有model是理所當然的。

介面組件,標籤按鈕文字框的使用就不說了,webview分別示範了指定html和指定url兩種用法。

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原生開發,搞混合開發有點摸黑。”。

最後上個圖~

 

長期歡迎項目合作機會介紹,項目收入10%用於酬謝介紹人。新浪微博:@冷鏡,QQ:908789432。


iOS的第一個習作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.