#如何簡單粗暴學(xué)習(xí)開發(fā)ios#
做了一個Android app才發(fā)現(xiàn)贿堰,明明是Android的市場份額比較大,但是朋友圈里面卻是一大堆iPhone的果粉氯檐。好吧齐遵,那就再學(xué)一個新的開發(fā)語言吧寂玲。為了不要偷懶,于是記錄一下學(xué)習(xí)過程梗摇。
1)以前在大型軟件項目里面拓哟,經(jīng)常費心折騰軟件工程,設(shè)計模式伶授,需求管理断序,版本迭代,團隊協(xié)作等等等等糜烹,而做一個小項目违诗,很多時候簡單粗暴也挺好。
2)第一步當(dāng)然還是搭建軟件開發(fā)環(huán)境疮蹦。
以前搭建Android開發(fā)環(huán)境的時候诸迟,因為google的網(wǎng)站全部被屏蔽,所以各種麻煩。現(xiàn)在ios開發(fā)環(huán)境也并不輕松亮蒋。首先需要一臺MAC電腦扣典,,慎玖,贮尖,,幸好有聰明的人類發(fā)明了虛擬機這種東西趁怔,所以作為入門學(xué)習(xí)湿硝,還是先用windows PC好了。VMware 12安裝Mac OS X 10.11:http://jingyan.baidu.com/article/bea41d4388a8c4b4c51be6ab.html润努,然后到app store下載安裝XCode開發(fā)軟件关斜。
3)還需要一本學(xué)習(xí)手冊。
我看了下網(wǎng)上有一些教程铺浇。視頻教程會比較詳細痢畜,但是比較費時間,比如老師講一些你已經(jīng)知道的東西鳍侣,你也不知道該快進一分鐘還是10分鐘丁稀。所以還是上京東買了本書《ios9開發(fā)指南》。以我崇洋媚外的性格通常是買老外寫的書倚聚,不過作為入門线衫,這本“編著”的、內(nèi)容羅列的像手冊一樣的東西惑折,貌似比較符合我現(xiàn)在的需要授账。另外下載了幾本電子書,比如《iOS開發(fā)指南:從零基礎(chǔ)到App Store上架(第2版 )》等惨驶。
4)Hello World
好像每種開發(fā)語言白热,都以“hello world”作為第一個教學(xué)程序。
所以:啟動Xcode -》新建Project -》根據(jù)手冊了解一些選項的含義 -》創(chuàng)建成功粗卜。瀏覽一下自動生成的項目文件棘捣,語法怪怪的,有一些像“@ - []”之類的東西休建,感覺跟java或c++都不太一樣∑懒疲回頭再看手冊测砂,先不管。
在Xcode的工具欄點擊運行按鈕百匆,啟動iPhone虛擬機砌些,出來一個白花花的界面,什么鬼都沒有。
回到Xcode存璃,窗口左邊是project navigator仑荐,在項目的各種文件里面翻翻撿撿,找到界面設(shè)計文件是Main.storyboard纵东,打開后也是一個白花花的界面粘招。繼續(xù)找一下,Xcode界面右下方有各種控件偎球,常用的Label洒扎、Button、Text衰絮,用鼠標(biāo)拖放到設(shè)計界面上袍冷。拖放的過程中,自動顯示各種虛線幫助對齊猫牡。選中Label修改其文為“Hello IOS !”胡诗。再次運行,一個什么都不做的app就可以了淌友。
回想Android界面設(shè)計的時候煌恢,需要先指定View的Layout,比如是線性平鋪或者網(wǎng)格等等亩进,控件運行時的位置是跟屏幕的實際尺寸相關(guān)的症虑。IOS好像是直接把控件拖到哪里就放在哪里,想一想归薛,有可能蘋果設(shè)備的分辨率只有幾種固定的大小谍憔,所以萬一ios界面是固定尺寸,也是可以理解的主籍。
5)程序入口點
所有程序必然有一個入口點习贫,ios的程序入口點在一個main.m文件,看起來還算正常千元,不過最后一個參數(shù)是“NSStringFromClass([AppDelegate class])”苫昌,有點像java反射機制的感覺。
6)ios程序的大體流程和結(jié)構(gòu)
從入口點開始試著順藤摸瓜幸海,點擊main.m中的函數(shù)UIApplicationMain祟身,再到Xcdoe窗口右上方選“?”圖標(biāo),就可以看到關(guān)于UIApplicationMain的快捷幫助內(nèi)容物独。其中最后一個參數(shù)的解釋是:The name of the class from which the application delegate is instantiated. bala bala......簡單粗暴來說袜硫,這個參數(shù)就是我們告訴ios系統(tǒng),我們的程序啟動時要實例化哪個對象挡篓。
再繼續(xù)跟蹤下去婉陷,點擊代碼中的AppDelegate帚称,右鍵菜單“Jump to Definition”尋找其定義,跳轉(zhuǎn)到AppDelegate.h秽澳。
AppDelegate.h里面有一個@property和一個@interface闯睹。@property的類型是UIWindow,估計是指向界面窗口的對象担神。@interface對象寫的是UIResponder楼吃,好像跟事件響應(yīng)相關(guān)。
再對照一下AppDelegate.m杏瞻,里面有個@implementation所刀,列舉了幾個跟app運行狀態(tài)相關(guān)的事件回調(diào)函數(shù),比如active捞挥、background狀態(tài)等等浮创。安卓也有app生命周期的狀態(tài)遷移和管理,ios的生命周期管理似乎看起來簡單一點砌函。其實我覺得斩披,還是不要生命周期管理比較省心。以前可能手機內(nèi)存太小讹俊,現(xiàn)在內(nèi)存和SD卡都已經(jīng)很大了垦沉,如果系統(tǒng)能管理虛擬內(nèi)存,開發(fā)可以簡單很多仍劈。
另外的文件厕倍,ViewController是視圖控制器,Main.storyboard是界面設(shè)計贩疙,不過還沒看出來它們?nèi)绾胃鷄pp的其它部分關(guān)聯(lián)到一起讹弯。
7)幫助文檔和資料
雖然有書,但最重要的資料仍然是官方的幫助文檔这溅,比如快捷幫助组民,或者從Help菜單里面打開Documentation and API Reference。以及簡單問題問度娘悲靴,復(fù)雜問題問stackoverflow.com