如何簡單粗暴學(xué)習(xí)開發(fā)ios(1)

#如何簡單粗暴學(xué)習(xí)開發(fā)ios#

做了一個(gè)Android app才發(fā)現(xiàn),明明是Android的市場(chǎng)份額比較大,但是朋友圈里面卻是一大堆iPhone的果粉。好吧,那就再學(xué)一個(gè)新的開發(fā)語言吧。為了不要偷懶,于是記錄一下學(xué)習(xí)過程。

1)以前在大型軟件項(xiàng)目里面,經(jīng)常費(fèi)心折騰軟件工程,設(shè)計(jì)模式,需求管理,版本迭代,團(tuán)隊(duì)協(xié)作等等等等,而做一個(gè)小項(xiàng)目,很多時(shí)候簡單粗暴也挺好。

2)第一步當(dāng)然還是搭建軟件開發(fā)環(huán)境。

以前搭建Android開發(fā)環(huán)境的時(shí)候,因?yàn)間oogle的網(wǎng)站全部被屏蔽,所以各種麻煩?,F(xiàn)在ios開發(fā)環(huán)境也并不輕松。首先需要一臺(tái)MAC電腦,,,,,幸好有聰明的人類發(fā)明了虛擬機(jī)這種東西,所以作為入門學(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í)手冊(cè)。

我看了下網(wǎng)上有一些教程。視頻教程會(huì)比較詳細(xì),但是比較費(fèi)時(shí)間,比如老師講一些你已經(jīng)知道的東西,你也不知道該快進(jìn)一分鐘還是10分鐘。所以還是上京東買了本書《ios9開發(fā)指南》。以我崇洋媚外的性格通常是買老外寫的書,不過作為入門,這本“編著”的、內(nèi)容羅列的像手冊(cè)一樣的東西,貌似比較符合我現(xiàn)在的需要。另外下載了幾本電子書,比如《iOS開發(fā)指南:從零基礎(chǔ)到App Store上架(第2版 )》等。

4)Hello World

好像每種開發(fā)語言,都以“hello world”作為第一個(gè)教學(xué)程序。

所以:啟動(dòng)Xcode -》新建Project -》根據(jù)手冊(cè)了解一些選項(xiàng)的含義 -》創(chuàng)建成功。瀏覽一下自動(dòng)生成的項(xiàng)目文件,語法怪怪的,有一些像“@ - []”之類的東西,感覺跟java或c++都不太一樣?;仡^再看手冊(cè),先不管。

在Xcode的工具欄點(diǎn)擊運(yùn)行按鈕,啟動(dòng)iPhone虛擬機(jī),出來一個(gè)白花花的界面,什么鬼都沒有。

回到Xcode,窗口左邊是project navigator,在項(xiàng)目的各種文件里面翻翻撿撿,找到界面設(shè)計(jì)文件是Main.storyboard,打開后也是一個(gè)白花花的界面。繼續(xù)找一下,Xcode界面右下方有各種控件,常用的Label、Button、Text,用鼠標(biāo)拖放到設(shè)計(jì)界面上。拖放的過程中,自動(dòng)顯示各種虛線幫助對(duì)齊。選中Label修改其文為“Hello IOS !”。再次運(yùn)行,一個(gè)什么都不做的app就可以了。

回想Android界面設(shè)計(jì)的時(shí)候,需要先指定View的Layout,比如是線性平鋪或者網(wǎng)格等等,控件運(yùn)行時(shí)的位置是跟屏幕的實(shí)際尺寸相關(guān)的。IOS好像是直接把控件拖到哪里就放在哪里,想一想,有可能蘋果設(shè)備的分辨率只有幾種固定的大小,所以萬一ios界面是固定尺寸,也是可以理解的。

5)程序入口點(diǎn)

所有程序必然有一個(gè)入口點(diǎn),ios的程序入口點(diǎn)在一個(gè)main.m文件,看起來還算正常,不過最后一個(gè)參數(shù)是“NSStringFromClass([AppDelegate class])”,有點(diǎn)像java反射機(jī)制的感覺。

6)ios程序的大體流程和結(jié)構(gòu)

從入口點(diǎn)開始試著順藤摸瓜,點(diǎn)擊main.m中的函數(shù)UIApplicationMain,再到Xcdoe窗口右上方選“?”圖標(biāo),就可以看到關(guān)于UIApplicationMain的快捷幫助內(nèi)容。其中最后一個(gè)參數(shù)的解釋是:The name of the class from which the application delegate is instantiated. bala bala......簡單粗暴來說,這個(gè)參數(shù)就是我們告訴ios系統(tǒng),我們的程序啟動(dòng)時(shí)要實(shí)例化哪個(gè)對(duì)象。

再繼續(xù)跟蹤下去,點(diǎn)擊代碼中的AppDelegate,右鍵菜單“Jump to Definition”尋找其定義,跳轉(zhuǎn)到AppDelegate.h。

AppDelegate.h里面有一個(gè)@property和一個(gè)@interface。@property的類型是UIWindow,估計(jì)是指向界面窗口的對(duì)象。@interface對(duì)象寫的是UIResponder,好像跟事件響應(yīng)相關(guān)。

再對(duì)照一下AppDelegate.m,里面有個(gè)@implementation,列舉了幾個(gè)跟app運(yùn)行狀態(tài)相關(guān)的事件回調(diào)函數(shù),比如active、background狀態(tài)等等。安卓也有app生命周期的狀態(tài)遷移和管理,ios的生命周期管理似乎看起來簡單一點(diǎn)。其實(shí)我覺得,還是不要生命周期管理比較省心。以前可能手機(jī)內(nèi)存太小,現(xiàn)在內(nèi)存和SD卡都已經(jīng)很大了,如果系統(tǒng)能管理虛擬內(nèi)存,開發(fā)可以簡單很多。

另外的文件,ViewController是視圖控制器,Main.storyboard是界面設(shè)計(jì),不過還沒看出來它們?nèi)绾胃鷄pp的其它部分關(guān)聯(lián)到一起。

7)幫助文檔和資料

雖然有書,但最重要的資料仍然是官方的幫助文檔,比如快捷幫助,或者從Help菜單里面打開Documentation and API Reference。以及簡單問題問度娘,復(fù)雜問題問stackoverflow.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,068評(píng)論 25 709
  • 鄉(xiāng)村剪影 這個(gè)天氣出行確實(shí)有些不妥,如血的殘陽襯的這天越發(fā)慘淡。似霧似煙,飄飄渺渺。眼前的一切顯得那么蒼白無...
    淺一點(diǎn)不驚濃艷閱讀 335評(píng)論 0 3
  • 他說, 他的理想是, 他的理想不再是理想。 眼神那么安靜, 態(tài)度那么誠懇。 走了那么長那么長的路, 是理想實(shí)現(xiàn)了嗎...
    晴朗的小白閱讀 274評(píng)論 2 2
  • 還有16天,千萬考生將要迎來改變他們命運(yùn)的時(shí)刻。為什么說高考能改變?nèi)说拿\(yùn),中國的教育體制內(nèi)本是如此。也感謝高考...
    米拉real閱讀 436評(píng)論 2 1

友情鏈接更多精彩內(nèi)容