1. 程式人生 > >初級篇-做iOS開發你需要知道的

初級篇-做iOS開發你需要知道的

寫在前面的話:

此blog為自己鞭策自己用,大概會從程式設計零基礎一直寫到開發一個iOS的完整專案吧,也來湊熱鬧記錄記錄自己的程式設計之路。Whatever,若有人看到此blog,恰好此blog中的內容對你有用,那就是美事一件了。

自己不是什麼大牛,但總有人沒有我牛,也總有人比我牛,而我也一直在去往大牛的路上,所以,永遠不要停止學習的腳步。

這篇就當給初學者一個guide吧:


1.如果你是一個程式設計小白,請你從頭到尾去了解(學習)一門程式語言,C、C++、Java,Whatever,不建議直接從OC開始學,建議C語言一定要學滴,或者C++,目的是為了讓你掌握程式語言是怎樣子滴,還為了讓你去儲備一些必備的知識,資料結構不可少,連結串列二叉樹各種查詢排序演算法學到最後一定是要信手拈來滴。一門語言學下來,多少能體會到一些程式設計的門道。


2.有了這麼個意識之後,再去學OC,再去上手體驗XCode開發環境,寫此blog時,XCode6是最新版本,都去下最新的版本用吧,切記蘋果有更新時立馬更,但更新也要處理好舊版本與新版本的相容問題,這個有經驗的開發者肯定經歷過iOS6到iOS7的變化,從擬物到扁平的轉變,XCode4到XCode5的轉變,那簡直...麻煩,這個不贅述,隨著經驗的積累這些問題遲早遇見,但是不要怕,問題都是可以解決滴。蘋果新推出的Swift語言是以後的開發趨勢,也是要學滴,但是首先把OC學紮實,因為從OC過渡到Swift還需要一定時間。就像從XCode裡面的nib(xib)到storyboard的使用也是趨勢一樣,我想新書應該會推薦使用storyboard來控制介面吧,仁者見仁智者見智啦,其實都挺好用,storyboard傾向整體,nib(xib)傾向具體,nib和xib是一個東西,只是人們習慣叫它nib而已,至於我說的整體具體的問題,用著用著自然就會明白,不贅述。


3.這是一篇非常初級的帖子,所以廢話比較多。做iOS開發你需要哪些東西,必備的硬體軟體我就不說了,豬都知道要Mac本和XCode,不要用MacBookAir,也不要用MacMini,要麼MacBookPro要麼直接iMac臺機,否則做開發做到最後你會後悔的,博主我 的老師被Air坑過,而我被Mini坑過,都是血的教訓。既然決定搞iOS,裝備還是好一點。還有開發者證書也不可少,做iOS開發嘛,怎麼樣都去AppStore上線一個專案過把癮吧,哪怕不盈利,這都是寶貴的經驗。


4.重點在這裡,分類列出來需要的知識,有些是面試必備,有些是開發必備,供參考,個人之見,歡迎大家批評指正~


<資料結構知識>

基本排序演算法,冒泡、插入、堆排、快排,尤其快速排序,時間複雜度O(nlogn),快啊; 二叉樹、平衡二叉樹、二叉排序樹;順序表就地逆序、連結串列遍歷以及逆序(基本吃一個透連結串列就ok了);各種查詢,二分查詢等。

資料結構是面試必備啊,牛逼的公司面試題就是各種演算法,當然,掌握資料結構,對開發來說是有很大好處的,稍微成熟點的程式設計師,我指的是瞭解一些計算機底層的,都會在開發過程中綜合考慮程式碼的時間空間效率。建議初學者就要建立起這個意識,雖然以後你肯定會遇到,因時間緊迫,顧不上效率得先完成功能的時候,但,願望是美好的,如若可以,請懷揣一顆寫優秀程式碼的心去學習~


<資料庫知識>

MySQL、CoreData、SQLServer,別被資料庫嚇到,資料庫的用處就是用來存資料,讀資料的,所以要學的只是怎麼配置資料庫,怎麼存資料,怎麼讀資料,網上翻翻教程就會了,so easy。要注意的是,使用時要處理好資料庫物件的生命週期,否則可能導致重複寫入資料庫,本地資料庫越來越大之類的錯誤...嘛,這個我就順便一提,具體問題在實際開發中遇見了就知道了,看不懂的可以略過我的話。我說的so easy是指資料庫的最基本用法,至於那些專門的資料庫人員,他們用Oracle都用的出神入化了,我們不需要到他們那麼高大上的境界。


<網路知識>

ASIHttpRequest這個框架是一定要掌握滴,否則別說你學過iOS,還有Socket GET POST請求這些個字眼,你一定要明白他們是幹什麼的,實際用用就好,http://www.oschina.net/question/54100_36184 這是一個非常好的網頁,上面總結了ASIHttpRequest的所有用法,簡單粗暴實用。


<bug除錯知識>

對於初學者,我只想說,掌握兩個,最實用也是最常用,一是斷點跟蹤,二是NSLog。斷點跟蹤,看看程式崩潰問題在哪,NSLog控制檯打印出資訊看看是否正確,比如數組裡面內容是不是預想的結果,當你遇見null之類的bug,NSLog乃是一大殺找錯手鐗,簡單粗暴實用。


<程式碼風格問題>

都說牛逼的程式碼程式碼本身就是註釋,但是在你還沒有到那麼牛逼的境界前,乖乖寫註釋。遵循兩個原則,一是在類開始處註明它的功能,二是在函式前面註明它是幹什麼用的,在複雜語句後註明它的作用。然後程式碼縮排對齊之類的問題就不贅述了,只要記住程式碼好壞體現人品好壞,你就會認真寫程式碼啦~開發過程中總會有n個頭檔案,父類子類各種類的,所以除了建邏輯目錄group時功能層次要清晰,在建立檔案時,命名也是如此,而程式碼加註釋也是為了自己,80%朋友自己寫的程式碼一個月以後再看像是看別人的程式碼一樣,真的會忘記的。


<一些牛逼的網址>

在想不出功能如何實現,設計找不到思路,就去這些網站逛逛學習學習取取經,沒搬運過程式碼的程式設計師不是好孩子~

<有關遊戲>

cocos2d,做遊戲,這個名字應該是如雷貫耳,一個開源框架,有c和c++版的,cocos2d-iPhone底層是C語言寫的,開發時用OC和C,cocos2d-x底層是C++寫的,開發時用OC和C++。大多數手遊都是cocos2d-x框架,因為它的可移植性好,除了專門做iPhone市場的公司可能只用cocos2d-iPhone,一般iOS和安卓市場都做的公司都是使用cocos2d-x。博主遊戲開發經驗有限,就不在這裡賣弄了。

寫在最後的話:

想來我這個偽程式設計師也寫了一年程式碼了,從大學對Java恨之入骨到現在自己從事軟體開發,簡直不可思議,由此可見困難都是可以克服的。感觸就不在這裡廢話了,想說的是,若是自己開發一款軟體,需求必須i明確,可以由簡到繁,切不可囫圇吞棗做了再說,不然後期需求有變,變的可能就是整個架構!那樣你會瘋。博主就被需求不明確的boss坑過,簡直喪心病狂,他自己都不知道要做什麼,做了一版又各種不滿意各種改,改到最後原來的框架完全不能用了...所以也希望大家能遇上頭腦清晰需求明確的好boss。

程式設計之路漫漫,路途上若有良師益友相伴會是事半功倍的,若沒有,一個人去尋找風景也是美事一件。

也許有一天我會從一個偽程式設計師變成一個真正的程式設計師吧。