① iOS 開發怎麼入門
一、
准備工作
1. Mac、iOS設備、開發者賬號
這些是做iOS開發必須要有的,而且是一大筆錢,但不要怕花錢,因為這些都是值得的。如果能夠學有所成,一兩個月的工資基本就回本了。就當是自己交的一筆「培訓費」吧。
2. 心態上的准備
如
果你是零基礎轉行iOS,那麼一定要有破釜沉舟的勇氣和決心,並做好打持久戰的心理准備。如果畏手畏腳、瞻前顧後,我勸你還是想好了再來,免得浪
費時間和金錢。我當初收入很低,是拿了3個月的工資買的Macbook,還天天擔心丟了或者弄壞;後來學習到小有所成時毅然選擇了裸辭,孤身一人來到陌生
的上海,經過2個月的待業狀態才找到工作。這一路走來都承受著巨大的精神壓力和物質壓力。
二、
學習路線
1. 對編程的基本認識
如果你是完全的零基礎,我建議先要對編程有個基本的認識。建議從C語言入手,因為C語言比較簡潔易上手,並且和Objective-C很相似。
視頻推薦網易雲課堂的
「計算機專業體系」課程,很適合入門。
書籍的話,推薦《C
Primer Plus》。
2. Objective-C語言學習
當對C語言有個大致的了解後,就可以開始學習Objective-C了。
推薦書籍:
《Objective-C基礎教程》
《Objective-C程序設計》
註:這兩本內容都差不多,但《Objective-C基礎教程》寫的更好、更經典,建議以這本為重點精讀。但是這本寫的比較籠統,難度稍高,所以如果遇到不懂的地方就看看《Objective-C程序設計》,這一本寫的簡單、詳細一些。
需要掌握並熟練運用的地方:
1) 面向對象編程的基礎知識。包括:面向對象與面向過程的區別、為什麼要面向對象編程,類、對象、繼承、方法、屬性、介面等概念的理解與使用。
2) Foundation框架。主要是NSString類、NSArray類、NSDictionary類、NSNumber類、NSRange類的熟練運用。
3) 內存管理MRC、ARC的原理,委託delegate、協議protocol、類別category、塊block的理解與使用。
3. iOS SDK/Cocoa Touch學習
有了Objective-C基礎,就可以開始邊看斯坦福公開課邊做APP了(個人覺得沒有OC基礎直接看這個會很吃力)。視頻如下:
斯坦福大學公開課CS193P《iOS7應用開發》(Objective-C語言)
斯坦福大學公開課CS193P《iOS8開發 》(Swift語言)
推薦書籍:《精通iOS開發》
第一個iOS應用:
蘋果官方有個做iOS應用的教程——《馬上著手開發iOS應用程序(Start
Developing iOS Apps Today)》。強烈建議以這個Demo作為你的第一個iOS應用,因為這個教程能讓你對一個iOS應用的搭建有個非常全面、細致的認識。完成了這個Demo後,就可以結合斯坦福公開課學到的東西創建屬於你自己的APP了。
需要掌握的地方:
1) MVC設計模式。只有理解了iOS的MVC架構,才能把一個應用解剖成一個個單獨的部分,這樣你在開始做一個項目的時候才不會茫無頭緒。
2)UIKit的各種控制項。特別是UITableView和UICollectionView一定要掌握,因為大部分的iOS應用都是由這兩種視圖搭建,吃透了它們那可玩的花樣就很多了,其樂無窮。
3) 導航控制器UINavigationController和選項卡控制器UITabBarController。同上,這兩個控制器也是絕大多數iOS應用UI框架的根基,也是多個MVC協同工作的最典型例子。
4) 場景切換的實現——Segue。熟練使用Segue很重要,因為一個應用一般都是各個界面輪流出現的,兩個界面之間怎樣實現跳轉、怎樣將一個界面的數據傳遞到下個界面,這都是實際開發中會遇到的問題。
5) Storyboard和AutoLayout的使用。這兩者是一個應用的UI界面設計不可或缺的部分。
6) 其它iOS高級編程。包括:數據存取CoreData/SQLite、多線程GCD、繪圖CoreGraphics、動畫CoreAnimation、網路編程、手勢Gesture、多媒體AVFoundation等等,這些內容都可以實際用到時再深入學習。
7) 第三方庫的使用。參考:GitHub 上都有哪些值得關注學習的 iOS 開源項目? - 編程
4. 堅持寫代碼、查文檔、讀技術博客
學習編程,一定要勤於動手,看再多的書、再多的視頻,如果不動手敲代碼都是白搭。哪怕書上和視頻上的代碼你一行都看不懂,也要親手把代碼敲一遍、把Demo親自實現一遍,這很重要。編程是手敲會的,不是眼睛看會的。
學習iOS開發的過程中,有遇到不懂是正常的,別害怕不懂,Cocoa的內容細節本來就多,每年的WWDC還會發布一些新技術。所以遇到不懂的知識一定要學會查蘋果官方API文檔:iOS Dev Center
做APP時,如果一個地方不會實現,或者遇到解決不了的問題,一定要學會使用Google搜索。一般來說,初學iOS遇到的問題,Stack Overflow上都有類似的提問,基本一搜一個准。
此外,CSDN等一些技術博客上的文章也很有參考價值。推薦一些優秀的iOS技術博客——中文 iOS/Mac 開發博客列表:tangqiaoboy/iOSBlogCN · GitHub
三、寫在最後的話
如
果你能按照以上所述做出一個APP上架並找到工作,那也基本算是入門了。但這並不是終點,這只是一個新的起點。iOS開發,乃至整個計算機/互聯網行業,
後面的路還很漫長。蘋果的整個Cocoa框架,可謂是博大精深,裡面可以深挖的東西太多了;而且一個程序、一段代碼可以進行的優化是沒有止境的。作為開發
者,只會一門語言是不夠的,網路編程、資料庫、演算法、設計、交互等等東西都是需要掌握的,而語言只是實現這些的工具,語言其實是最簡單的。
此外,如果你和我一樣是非科班出身,還需要把計算機基礎課程補回來,即:數據結構、演算法、操作系統、資料庫、計算機網路、編譯原理等。因為這些知識是你的「內功」,這些基礎直接決定了你在這個領域的天花板所在的位置。
當
然,基礎差一點也問題不大,最重要的是你對計算機、互聯網的熱愛和熱情。你需要有很強的自學能力,不斷地去學習新知識,才不會被這個日新月異的行業淘汰;
你需要保持一顆好奇心,不斷地嘗試和接受新事物,不斷地創新,守舊的人在這個行業無法生存。在我找工作的過程中,那些知名的大公司都是直接在簡歷關就將我
刷掉了,而那些給我Offer的公司,無一例外都表示,之所以選擇我是因為欣賞的我的熱情、看重我的自學能力。
所以,如果你和我一樣對iOS開發充滿熱情,敢於接受挑戰,那麼就從現在開始努力吧,我在前方的路上等你!
② 零基礎學習手機游戲開發,需要看哪些書可以的話從基礎到高級依次列下。
請給我一個好評哦 謝謝啦
1學習c語言
2學習objective-c,看一下面向對象編程思想和數據結構
3看官方sdk,照著書的例子開始簡單控制項的使用
4如果你想做2d游戲,學習cocos2d
5你還想寫類似憤怒的小鳥,還需要學習box2d或者chipmunk(物理引擎)
6你還想學習3d游戲的話,學習opengl es(數學要學習矩陣)
7你還想寫網路交互類軟體的話,要有html+css等知識
8如果你還想寫基於無線網或者藍牙的對戰游戲,要學習tcp/ip協議,套接字,game kit之類
9如果你還想寫和後台交互的應用,要學習JAVA,PHP,Ruby(用作伺服器端的控制)
10如果你還想寫圖像識別,要學習特殊的演算法,matlab
11如果你想在開發中更得心應手的話,要學習UML,軟體工程,設計模式等。
12如果你想快速開發又不想費時學這些東西,你可以先試試網上一些 圖形化開發平台 如應用之星。這些不用代
碼一樣可以製作APP的
③ 如何零基礎能自學Java
給你推薦一個寫得非常用心的Java基礎教程:
這個教程將Java的入門基礎知識貫穿在一個實例中,逐步深入,可以幫助你快速進入Java編程的世界。萬事開頭難,逐步跟著這個教程走一遍,對Java應該就會有一種入門的感覺了。然後再去學習更高級的主題,或者更深入地學習其中的某些知識點。
第1課 Java開發環境安裝與配置
第2課 Eclipse的安裝與使用
第3課 第一個Java程序
第4課 面向對象基礎
第5課 基本數據類型
第6課 運算符
第7課 字元串操作
第8課 程序的控制流
第9課 靜態變數與靜態方法
第10課 Java集合
第11課 封裝與繼承
第12課 抽象類與介面
第13課 異常處理
第14課 綜合實例修改
入門之後,可以考慮以下學習內容和路徑:
1、學習的基本路徑
首先建立好開發環境非常重要,工欲善其事,必先利其器。做任何開發,首先就是要把這個環境准備好,之後就可以去做各種嘗試,嘗試過程中就能逐漸建立信心。初學者往往在環境配置中被各種預想不到的問題弄得很沮喪。
建立起來環境了,改變世界就靠你的代碼了。學習一門編程語言沒有太多的訣竅,你可能可以去找一本比較好的經典的入門書籍,現在網路上也有非常多的資料,圖文或者視頻都可以,根據個人喜好選擇。最重要的練習,熟能生巧,在不斷的練習中去加深自己對程序語言的理解。
接下來你需要了解這三個術語,叫SDK、API跟Lib,分別表示軟體開發套件,應用編程介面和庫。這三者之間其實有一定的聯系,或者是交叉。總體來說,它們都是給我們提供的一些封裝了底層功能的基礎設施。做Java開發的話,這些東西通常體現為我們所經常說的「框架」。事實上要成為一個資深的Java開發者,對各種API和框架的學習,可能是花時間最多的一個地方。
當然你也不可能把所有API或者SDK種的所有內容完全弄懂。在軟體開發中也有二八原則,少數的API能夠勝任開發中的大部分場景。所以你只需要掌握這些關鍵部分,當在新場景下遇到不能解決的新問題時,再去查看幫助文檔。所以幫助文檔的閱讀也是技術學習的一個關鍵因素。了解了基礎原理之後一般就能上手開發了,幫助文檔可以幫助你在實踐中學習。
2、三個神器
三個神器,對於軟體開發者來說非常重要。
第一個Google,雖然因為各種原因的話有時候我們訪問不了,但是這基本上是可以去尋找技術資料最好的方式。
第二個是Github,之前提到過庫的概念,Github就是一個可以找到大量第三方庫的地方,那是別人給我們封裝好的可以復用的代碼。比方說造一輛汽車的話,我們經常不要自己造輪子,而Github上可以找到很多優質的輪子,這些輪子還是免費(代碼都是開源的),我們應該盡量利用它們來拼裝自己的汽車。
第三個是StackOverflow網站,在這個問答網站上你遇到的幾乎任何開發問題都能快速找到答案。
3、Java Web全棧開發的推薦學習內容
簡單總結一下,大概包括下面這些內容。每一部分都可以細化成很多知識點,這只是一個粗略的羅列。把它當做技術地圖就好了。
開發環境的建立與項目管理:Eclipse、Maven和Git
Java編程基礎:基本語法、面向對象特性、Java8新特性、更高級庫(比如Guava)的使用等
前端開發技術:HTML、CSS、Bootstrap和JavaScript基礎
Spring基礎:依賴注入IoC、面向切面編程AOP、SpringBoot
MVC框架:Spring MVC、Struts等,包括URL路由、模板、表單、Session、攔截器等知識
數據訪問:關系型資料庫、JDBC、Spring JDBC、事務、ORM框架(MyBatis,Hibernate、JPA)
成熟應用的關鍵功能實現:郵件發送、非同步任務、緩存、日誌等
應用的測試和部署
4、JSP/Servlet的相關內容
最後專門提一下JSP和Servlet,雖然現在各種成熟的MVC框架已經讓Java Web開發基本很少使用JSP和Servlet的原生功能了,基本都做了一層封裝。但是這部分基礎知識建議初學者還是要認真學習。
Web基礎,HTTP協議
C/S模型,瀏覽器訪問網站過程
URL基礎知識
HTTP消息——請求和響應
處理HTTP請求的應用程序
Servlet/JSP簡介
Servlet
Servlet容器,Servlet處理機制,Servlet生命周期
部署Servlet
ServletContext, ServletConfig
Filter, Event Listener
JSP
表達式,scriptlet, declaration
在JSP中訪問Java類
JSP內置對象
處理用戶輸入
HTTP方法——GET v.s. POST
讀取表單數據
構建MVC應用
Servlets/JSP存在的問題
MVC設計模式
使用RequestDispatcher
在Servlets和JSP中傳遞數據,EL表達式
使用JSTL作為模板
JSP Tag Lib
Core Tag(if, loop)
Function Tag(string, fmt, utils)
Session
Session&&Cookie基本概念
通過Cookie記錄用戶狀態
使用Session跟蹤用戶
這部分內容,可以看看這個JSP/Servlet課程:
第1課 Java Web開發需要學習什麼?
第2課 JSP與Servlet:Servlet簡介
第3課 JSP與Servlet:JSP簡介
第4課 JSP與Servlet:第一個JSP頁面
第5課 JSP與Servlet:JSP表單處理
第6課 JSP與Servlet:MVC設計模式
第7課 JSP與Servlet:使用JSTL
第8課 JSP與Servlet:JSP指令與動作
第9課 JSP與Servlet:JSP表單輸入控制項
第10課 JSP與Servlet:博客用戶注冊表單處理
第11課 JSP與Servlet:通過Cookie與Session管理用戶狀態
第12課 JSP與Servlet:通過Filter攔截請求保護頁面安全
第13課 JSP與Servlet:頁面重定向
5、更進一步
分布式、深入Java虛擬機、針對不同場景的Java技術框架,到這個階段已經不僅僅是Java的學習了,而是大型應用場景的技術積累、架構設計的精進了。
如果希望學習Spring MVC,下面是一個精心製作的課程,非常值得一學:
第1課 創建Spring Boot項目
第2課 URL路由:@Controller和@RequestMapping
第3課 @PathVariable
第4課 @RequestParam
第5課 模板渲染
第6課 分頁處理
第7課 表單提交
第8課 表單驗證
第9課 Flash Attribute
第10課 攔截器Interceptor
第11課 處理PUT和DELETE請求
第12課 文件上傳
第13課 異常處理
第14課 @ResponseBody與@RequestBody
問一問自己是不是應該努力學,
既然下定決心學習了那麼就勇往直前,
別被任何動搖了自己的心!