1.iOS第一個簡單APP

大綱:編程

  1. iOS系統發展
  2. UIOC
  3. 簡單的APP程序
  4. 程序的生命週期

 

 

1.iOS的系統發展服務器

1983年OC程序開始發展到2015年,30多年的時間,但這依然不是一個十分完善的語言,能夠說如今都沒有一個十分完善的,不用更新了的編程語言。可是,iOS選擇了OC做爲它的開發語言,這是爲何咱們前期須要先來學習OC語言的緣由。那其實以前咱們學習的都是一些開發的必備知識,並無接觸任何的軟件開發的知識。從今天開始纔是真正的開始接觸開發。咱們知道市面上先有iOS、Android、Window Phone這三大移動平臺。Windows Phone在國內是什麼待遇呢?相信大家關注支付寶的人,應該聽過1%的梗,window phone的用戶要支付寶更新,結果支付寶發了一個微博說「你爲何選擇1%的生活」,是說的它佔有量不到1%,其實我是很是喜歡微軟的,個人第一個智能手機是WP7.0,我還有XBox、surface設備。那還有Android和iOS的開發,Android是如今佔有量最大的一個移動平臺,大家用Android手機的人,應該新的旗艦級就還好,若是是通常的或者是之前的手機,那必定有一個反應就是,慢慢的手機變卡了。若是你接觸智能手機時間比較早的話,你當時買的Android2.3的手機如今是都不能夠升級到4.0以上了吧。而Android的一個變革時期就是4.0以後,優化好了不少。它這個硬件限制軟件更新的方法,我以爲是回讓他犧牲必定的用戶量的,畢竟沒有人但願看到本身去年買的手機,今年就不被支持了吧。可是上面咱們說的事情,蘋果就處理的比較好。再咱們開發人員上面,Android的開發配置方面咱們須要作的環境搭建,十分複雜,你光是作這個搭建開發環境的事情估計就須要半天了,可是咱們這個iOS開發,到如今爲止,作了什麼來搭建環境啊?僅僅只是安裝了一個XCode吧。實際上作開發的時候呢,其實這些都無傷大雅。綜上所述呢,咱們這個作iOS開發會比其餘的有必定的優點。但一樣,咱們作這個的成本相對前二者就要高一點了,無論是買一個Mac仍是安裝一個黑蘋果。架構

作iOS的開發,先要了解一下iOS這個系統的發展。從iOS7這以後,都是擺脫了以前喬布斯的一個理念,不只是從硬件方面,他的屏幕尺寸一點點的變大,還有它的整個擬物化的UI風格變成了一個扁平化的設計。這個都是如今iOS的一個發展趨勢。因此咱們瞭解他如今的一個界面的風格,也是咱們之後對軟件開發很重要的一塊。咱們能夠來看看如今的一個真機上的樣式。app

  • 主界面

   

  左邊這個界面,就是咱們如今iOS9.2最新版本的一個界面,咱們看到了它上面的軟件圖標排列,就像是把一個個的軟件放到棋盤格子裏面了吧。框架

 

  咱們回憶一下,五子棋的棋盤是否是一個個90°的筆直的角,而咱們看到這個軟件的圖標樣式,是否是一個圓角的樣子,這個已經被蘋果註冊了專利——圓角矩形。包括它的文件夾都是這個效果。編程語言

 

  那咱們再仔細一點看,看每個圖標的樣子。是否是每個都是很簡單的圖形,沒有不少很炫的效果。都像一個個瓷磚貼屏幕在上面?這其實是iOS7以後,力推的一個扁平化效果,和iOS7以前的一個擬物化效果徹底不一樣。擬物化咱們顧名思義,就是模仿現實生活中的物品來作的一個效果。好比之前的日曆應用就是一本日曆的樣子,而且每個都有陰影效果,顯得很像現實生活中的東西同樣。其實這個扁平化的歷史很好玩,他是由谷歌的一個工程師提出來的概念,可是微軟是第一個使用扁平化做爲移動平臺界面的公司,蘋果呢,能夠說是如今把扁平化效果作的最出色的一家公司。以致於有不少的消費者認爲蘋果是這個扁平化概念的提出者。這個扁平化咱們要好好地記住了。ide

 

  爲何咱們要了解蘋果如今的風格呢?其實我我的以爲最主要的一點,由於,你不能在控件列表中,找到之前的樣式了,本身來作那種樣式UI的話,麻煩的不是一點點。再者,蘋果對按照他當前最新樣式來開發的軟件,只要你內容能夠,那麼會有一個在app store裏面上內推榜的機會。這是一個推廣本身軟件的好機會。函數

       

 

  

  • 應用界面 

  

  那咱們再來看看這個時鐘應用的內部,咱們之後作的事情是來開發吧。看看這個官方的應用,咱們看看一個應用由什麼來組成。左上角的「編輯」和右上角的「+」號,是否是一個按鈕啊?它能夠被點擊的,而且相應事件,是一個按鈕啊。那咱們再看中間有「世界時鐘」幾個字吧,這其實就是個字符串對不對。一樣地道理,下面「北京」、「今天」、「柏林」等等這些東西都只是一些字符串吧。那在咱們UI階段,有專門放置字符串的控件,讓他可以放到這個界面上面。每個時鐘,實際上是個圖片,咱們也有專門的控件來放圖片。那最底下那些東西,其實也是一些按鈕了吧。因此咱們能夠看到,作一個軟件仍是很簡單的啊。工具

 

 

 

 

 

 

 

 

 

  

那你們能夠看到,iOS原生的應用都有一個固定的設計風格,並無一個應用一個大相徑庭的風格吧。其實蘋果不只是對本身出得軟件的界面風格有要求,他對全部在app store上架的都要求符合如今的一個界面風格要求,保證本身整個商城的生態環境。這也是與Android最大不一樣的地方。那要符合這樣一個設計風格,就要體現一個UI設計師的功底,和咱們的關係就不是太大。可是說回來,若是一個APP的界面作的很醜,那用戶也不會對這個軟件買帳啊,天然就發展不起來。說道這個用戶,咱們也講一下app的這個商業盈利模式,像一些免費軟件,它都有一些內購的東西吧,好比說每一年WWDC大會上面,一些免費得軟件或者遊戲。那些收費的軟件就更不用說了吧,直接找你要錢的嘛。不過相比內購,我是更喜歡付費應用的。蘋果如今是全球市值最高的公司,他會作一個只用來讓人們方便下東西,讓咱們來賺錢的商城麼,畢竟服務器的開銷也不小!那他本身是怎麼賺錢的呢?經過一個擁有高質量用戶羣體的app store,拉動開發者爲他開發軟件,其中每個app的下載,他就從中抽取30%,有好的應用就會有更多的人進入到這個生態圈,更多的用戶,那就會有更多好的開發者進入到這裏面來,這是一個完美的環。僅2014年一年,開發者經過app store賺取了150億美圓,其中就有45億美圓落入了apple的口袋。如今大家能夠想一想這個app store的價值。佈局

 

 

 

2.UI介紹

以前學習的都是開發的一個語言基礎,不會這個編程語言,咱們是沒有辦法在以後的工做中進行一個開發的,咱們說學UI就是學習搭建一個程序的界面,若是你沒有學習這個編程語言,那也是沒有辦法寫出一個邏輯。這是咱們以前爲何要學習OC的緣由。那咱們OC學了這麼久,咱們還有人想對着那個只能打印字符的控制檯一生麼?若是有的話,那你不適合作一個軟件的開發,卻是能夠去嘗試下作一個後臺的開發啊~那什麼東西叫UI呢?User  Interface這樣一個詞組的縮寫,翻譯過來「用戶界面」,國外有的大學有專門的課程叫UI交互設計、UI設計等等,證實這個UI他也不是一個很簡單的東西,否則也不會有這麼多的課程專門來說這個啊,可是咱們對UI的使用就很簡單,直接用別人總結出來的東西就能夠了~可是咱們要了解這個東西,怎麼去使用別人的勞動成果。

咱們學習UI究竟是在學習什麼呢?相信大家還記得OC裏面咱們學的Foundation框架,在UI階段,咱們也有一個框架,叫作UIKit,它也爲咱們封裝了不少方法,能夠直接進行一個操做。比方說咱們能夠直接使用他,來響應一個用戶的點擊或者觸摸,能夠在屏幕上顯示咱們想要的內容,好比一個文字或者圖片,相對應的系統的相機、麥克風等等設備咱們均可以進行一個調用。那相應的UIKit框架的使用,咱們後面會一步一步來爲你們講解。咱們以前說了iOS的一個系統架構是分紅了4層,最下面的Core OS,Core Service,Media和Cocoa Touch層,相比咱們如今使用的Mac OS系統,實際上是在Cocoa框架上面封裝了一層Cocoa Touch層。也是和咱們操做息息相關的一層,咱們UI階段要學習的就是Cocoa Touch 、Media層的使用。它裏面包含了咱們UI階段使用最多的UIKit框架,還有地圖、聯繫人、信息等等都是這個框架下的。還有Media層中也是咱們要用到的,像播放音頻視頻、繪圖就是Media層中來實現的。Core Service主要是包含咱們以前學的Foundation框架,Core OS是最靠近底層的一層,咱們使用的機會基本上沒有了。

 

 

 

3.簡單App講解

A.iOS現行設備尺寸、像素規範

咱們如今開發的是iOS操做系統,用的最多的就是iPad和iPhone兩個設備,其實都是差很少的,咱們如今就先來看看iPhone的開發

  • 如何建立一個Single View Application

仍是像之前同樣,咱們開始新建一個工程,可是!咱們再也不是選OS X裏面的命令行工程了,而是像上面顯示的,咱們找到iOS這個選項,選擇他下面的Application,那咱們就會看到有上面幾個選項,第一個是在iPad上面會用到的,他有一個側邊欄能夠選擇。第二個是一個有分頁效果的頁面,能夠左右滑動。第三個是單個頁面的應用。第四個是帶有一個標籤欄,就像上面咱們看的時鐘應用,下面的按鈕能夠跳轉到不一樣的一個頁面。那最後一個就是Game,我就不說了。在咱們學習過程當中,使用最多的是第三個,也是我選中的Single View Application。

那咱們像之前同樣,點擊Next,而後創建一個工程。這裏咱們先創建一個名字叫作test的Single View Application工程。                                                                                                                                                

那咱們能夠看到咱們如今看到的不是像之前只有一個.m文件了,而是多了APPlication和ViewController這兩個類,還出現了兩個咱們歷來沒有看到過的,一個Main.storyboard和一個Launchscreen.storyboard文件,咱們等下會來介紹這個東西,講這個東西有什麼用。咱們來選中Main.storyboard文件,看看他是什麼樣子。

這是一個正方形的圖形,它是否是有點像一個平板的屏幕啊?比咱們的手機屏幕要寬一些,長一些。storyboard顧名思義是一個故事板,storyboard就像一張白紙,你能夠在上面寫故事,什麼意思呢?你能夠在上面畫任何你想要它顯示的東西,咱們可使用這個工具對頁面進行一個佈局,想要在什麼位置顯示什麼東西,拖相應的控件上去就行,這就是咱們所謂的可視化開發。在日後的工做中,若是須要趕進度,使用這個工具,它甚至可讓界面的開發時間減小一倍。

咱們先什麼都不幹,直接運行一次這個程序。仍是和之前同樣,咱們按快捷鍵command+R。咱們發現,有一個應用程序自動運行了,咱們作iOS開發,你作項目,必須運行在iOS設備上面,那咱們在開發階段,使用模擬器來進行調試工做,當你項目比較完善以後,咱們就使用真機來測試。那這就是一個iPhone的模擬器,咱們如今看到的這個界面是一個徹底空白的軟件界面,內容上和咱們以前看到的storyboard文件是徹底一個樣子。那咱們默認運行的設備應該是iPhone6,在你的項目名旁邊能夠看到一個設備的名稱,點擊以後,就能夠選擇不一樣的模擬器來運行你的程序。那咱們如今要記住的是一個現有的設備的尺寸,和邏輯分辨率這一欄。這對於咱們往後進行一個開發是十分重要的數據。

設備

iPhone

Width

Height

對角線

Diagonal

邏輯分辨率(point)

Scale Factor

設備分辨率(pixel)

PPI

3GS

2.4 inches (62.1 mm)

4.5 inches (115.5 mm)

3.5-inch

 

320x480

@1x

320x480

163

4(s)

2.31 inches (58.6 mm)

4.5 inches (115.2 mm)

3.5-inch

320x480

@2x

640x960

326

5c

2.33 inches (59.2 mm)

4.90 inches (124.4 mm)

4-inch

320x568

@2x

640x1136

326

5(s)

2.31 inches (58.6 mm)

4.87 inches (123.8 mm)

4-inch

320x568

@2x

640x1136

326

6

2.64 inches (67.0 mm)

5.44 inches (138.1 mm)

4.7-inch

375x667

@2x

750x1334

326

6+

3.06 inches (77.8 mm)

6.22 inches (158.1 mm)

5.5-inch

414x736

@3x

(1242x2208->)

1080x1920

401 

 

那從整個界面上咱們還能發現一個東西,照道理來講,這個界面應該是一個全白色的,那如今它上面多了一些數據。並且咱們能夠看到Carrier(運營商),有個WiFi標誌。中間有一個時間,這個時間是咱們電腦的系統時間,最右邊是電量圖標。這個東西呢,咱們稱之爲狀態欄,他在iOS7.0以前都是一個不透明的效果,是一個單獨存在於屏幕上的東西,可是如今,他是透明的,怎麼說呢?你能夠看到他如今是一個白底黑字,你能夠嘗試將整個背景設置爲黃色、綠色或其餘的顏色,就會看到一個很明顯的效果了。

  

那咱們如今來嘗試在界面上面,加入一些東西。咱們點開main.storyboard文件,看看右下角

 

  第一個是一些文件,好比建立類能夠直接從這裏拖出去就建立了一個類。

  第二個是一些代碼段。

  第三個是一個(Object-Library)資源庫,這裏有不少的控件能夠供咱們來選擇。但咱們如今不會用到裏面全部的控件,咱們在以後的學習中會一點點的來學習。

  第四個是媒體庫。

 

 

 

 

 

 

 

 

B.作一個簡單的加法計算器。 

 

  • 界面的搭建

這裏來嘗試使用storyboard作一個簡單加法計算器,上面是咱們最後的成品效果圖。點開main.storyboard文件,在右下方的資源庫中,找到這樣一個控件。按住它,向storyboard上面拖過去,當storyboard變成藍色以後,咱們鬆開手,是否是上邊多出了一個顯示着Label字樣的標籤,接下來雙擊拖出來的這個控件,如今他就能夠被編輯了,咱們在上面打上「簡易加法計算器」,點擊一下旁邊,取消這個編輯效果。能夠看到它顯示的樣子並非咱們所但願的,那咱們再次單擊這個控件,此次控件上出現了8個錨點,咱們先拖動右下方這個錨點,能夠看到,字一點點的能夠顯示出來了。咱們將這個調整到合適的大小,順即可以嘗試一下其餘幾個錨點,看看效果。咱們看效果圖上面,還有「+」、「=」和「0.00」幾個控件,這些都是可使用剛纔這個控件來進行實現的吧。嘗試改變他們的位置和大小,讓它看起來更美觀。

咱們再次看到右下方的資源庫中,單擊這個Label控件,咱們能夠看到旁邊出現了一個對話框。那紅色框起來的地方,UILabel是這個控件的類,表明什麼,他是一個UILabel類控件吧,記住它,對之後代碼編程的時候會頗有用。

 

 

最下方還有一個能夠點擊的「計算」按鈕,那按鈕顧名思義Button吧,這裏由UIButton控件來完成所需。依然是將Button拖到storyboard上面,可是咱們看到並無上圖的藍底白字的效果,打開右側邊欄,選中第四個像遊標卡尺一些樣的三角按鈕,出現了不少選項可讓咱們調整。將Text Color改成白色,View中的background改成藍色。如今就有了上面效果圖的效果了吧。

一樣地還有兩個能夠輸入內容的地方,咱們使用UITextField控件來完成,你們能夠本身在資源庫中找找。順便試一下其餘的控件都有什麼用處。

 

 

  • 程序業務邏輯的建立

運行一下,能夠看到如今咱們的界面已經作好了。可是這個程序有任何的效果嘛?無論咱們點擊什麼,都沒有任何的反應吧。那接下來,就要給它建立他的邏輯。

那想要代碼和圖形可以結合起來,XCode爲咱們提供了一個開發界面,使咱們方便操做。點擊右上角的輔助編輯按鈕,咱們發現有了兩個能夠操做的開發界面,一個是顯示的storyboard,一個顯示的是代碼。那這個有什麼用呢?如今,按住你電腦上的control按鈕,不要放手,用鼠標按住storyboard區中的「計算」按鈕,向代碼區拖動,有沒有發現多出了一根藍色的線,咱們一直將鼠標移動到類擴展區域,看到代碼區多了一根橫線,這時,鬆開鼠標和鍵盤就行。

 

鬆開鼠標後,看到彈出了一個對話框

第一行Connection中有三個選項,第一個是默認的Outlet,這個中文就是出口的意思。能夠想象咱們有一個管道,讓咱們把東西從樓上運到樓下,那咱們在管道的出口處等着拿東西就能夠了吧~一樣,想要獲取到這個控件的信息,信息就從樓上運過來,咱們找到這個管道的出口,是否是就能夠拿到控件信息了,經過這個咱們能夠拿到控件屬性。第二個是Action,動做,使用這個會產生一個新的方法,在響應用戶交互時,會執行方法中的代碼。第三個Outlet Collection,顧名思義一個屬性的集合。這裏咱們選擇Outlet。第二行的對象所屬,是個不可選擇的。第三行Name,要咱們爲這個屬性或者這個方法取一個別名,這裏取名calculatorButton。第四行Type中,是咱們這個對象的類型,以前拖拽控件的時候咱們就看到了,這裏會是UIButton。最後的Storage,持有類型,這個控件在拖到storyboard上面的時候,就被這個視圖有一個Strong持有,保證它存在於堆中,因此在外部,咱們不須要一個Strong指針指向它。若是這個控件從視圖中離開,那麼,他就會被從堆中清除,這個指向控件的指針就會變爲咱們想要的nil,由於向nil發送一個消息,程序是不會崩潰的。大部分狀況下,這裏都是使用Weak。最後按下Connect按鈕或者敲下回車。

本來什麼都沒有的類擴展中,忽然就出現了一段代碼。仔細看,和咱們之前寫類的屬性的時候,十分的相像吧。可是這裏多了一個IBOutlet,實際上對編譯器沒有任何的用處,只是告訴XCode,我和其餘的東西有關聯。你能夠本身寫一個屬性,而後給他加上IBOutlet關鍵字,前面都會多出這個形狀。如今咱們把鼠標移到這個圓上面,是否是發現,storyboard上面,「計算」這個按鈕亮了起來,這就是告訴咱們,這個代碼已經和storyboard相關聯了。

咱們有輸入框,要拿到輸入框中的信息是否是同樣須要給兩個輸入框拖線?還有最後用來顯示結果的Label也是須要的吧。咱們給他們分別取名text1,text2,resultLabel。

點擊這個計算按鈕,程序也應該要有反應,這裏就是再次對Button拖線,但選擇再也不是Outlet,而是剛纔說過的Action了。咱們看到Action的返回類型是IBAction,這個其實就是void類型。

 

 1 @interface ViewController ()
 2 
 3 //計算按鈕
 4 @property (weak, nonatomic) IBOutlet UIButton *calculatorButton;
 5 //按鈕計算方法
 6 - (IBAction)calculator:(id)sender;
 7 
 8 //第一個輸入框
 9 @property (weak, nonatomic) IBOutlet UITextField *text1;
10 //第二個輸入框
11 @property (weak, nonatomic) IBOutlet UITextField *text2;
12 
13 //結果Label
14 @property (weak, nonatomic) IBOutlet UILabel *resultLabel;
15 
16 
17 @end

 

 

 如今咱們來分析下如何編寫點擊按鈕的方法。第一,咱們要拿到輸入框中的數字,UITextField中就爲咱們提供了相應的屬性--text,使用self.text1.text,咱們就能夠拿到text1輸入框中的內容。text2也是同樣的道理。咱們點到UITextField類中能夠看到,text屬性是一個什麼類型啊?NSString吧,咱們能不能直接把字符串拿來相加?明顯是不能夠的,使用floatValue的getter方法,咱們就能夠將它轉化成數字了吧。那咱們有了計算的結果,就要將結果顯示在界面上了,UILabel也有text屬性,可是NSString要怎麼才能顯示一個float的基礎數據類型呢?要用到Foundation框架中stringWithFormat:方法了吧。而後將這個NSString賦給Label的text屬性就能夠了是否是?下面就是實現的代碼。

 

1 - (IBAction)calculator:(id)sender {
2     if (self.text1.text.length != 0  && self.text2.text.length != 0) {
3         self.resultLabel.text = [NSString stringWithFormat:@"%.2f", self.text1.text.floatValue + self.text2.text.floatValue];
4     } else {
5         NSLog(@"Error, No Input");
6     }
7 } 

 如今一個簡單地加法計算器就作完了,這也是咱們第一個iOS程序。

 

 

 

4.視圖的生命週期

說過全部的這些簡便的東西,其實是他背後無數行代碼的一個實現,那咱們也可使用代碼來作。可是這一課咱們不講如何使用代碼來作上面的簡易計算器。咱們介紹一下之後代碼寫在哪裏。

那咱們說C語言程序啓動是從main函數這個入口函數進去,展開左側邊欄中的Supporting Files文件夾,main.m文件就在這裏,可是咱們不在這個地方寫代碼。說到哪裏寫以前,咱們先看到程序的main函數,函數有入口是否是就有出口,執行完return中的函數,就return對不對,可是這裏由於這個函數,致使main函數return不了。那這個函數前面兩個參數是一些系統信息,第三個是一個nil,其實是一個默認指定的UIApplication類,最後一個就是把程序的啓動代理給獲取到的類名,關於這個參數能夠本身去研究一下。那函數其實是幫咱們建立了一個UIApplication對象和AppDelegate的對象,並將程序代理給AppDelegate對象,而且調用了AppDelegate中的方法。咱們看到系統是默認幫咱們建立了AppDelegate類吧,點進去,看到下面這個方法就是被代理調用的協議方法。

1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 2     // Override point for customization after application launch.
3     return YES; 4 }

咱們看這個代碼,其實啊,作這個iOS的開發,其實英語好的頗有優點,爲何這麼說呢?didFinishLaunching這個是完成啓動的意思,他在程序已經啓動完以後,就會到這個方法裏面來。後面咱們會知道有方法,能夠在程序啓動以前對程序進行一些設置。咱們之後寫代碼直接到這個方法裏面寫。

 

那還有其餘的一些代理方法,咱們能夠來看一看。一個程序開始運行了,是否是就像激活了一個設備,設備開始運轉,咱們這裏也有一個相同的協議方法:程序進入激活狀態,是活動的。這個在程序每次在運行的時候都會調用。

 

//進入到活動狀態
- (void)applicationDidBecomeActive:(UIApplication *)application {
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
    NSLog(@"Become Active");
}

 

有激活天然有一個非激活狀態,何時會是一個非激活的狀態呢?咱們雙擊Home鍵,你會發現控制檯就打印了「Resign Active」

//程序進入到非活動狀態
- (void)applicationWillResignActive:(UIApplication *)application {
    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
    NSLog(@"Resign Active");
}

 

那咱們知道,有雙擊Home鍵的操做,固然有單擊Home鍵的操做吧。咱們按一下Home鍵,其實是進入了一個後臺。咱們能夠看到,控制檯此次打印了「Resign Active」和「Did Enter Background」。咱們在執行鎖屏、接電話等操做的時候都會進入到這個後臺,那進入後臺和非激活狀態是不同的啊。但你進入了後臺,那就必定是非激活的狀態。

//程序進入後臺
- (void)applicationDidEnterBackground:(UIApplication *)application {
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
    NSLog(@"Did Enter Background");
}

 

進入了後臺,咱們點擊這個程序圖標,還能回到這個程序,一樣地一個回到前臺的代理方法。

//進入前臺
- (void)applicationWillEnterForeground:(UIApplication *)application {
    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
    NSLog(@"Will Enter Foreground");
}

 

最後咱們看到,還有一個程序終止的代理方法。這個是咱們退出程序的時候會調用到的一個方法,爲了防止程序意外退出咱們沒有保存一些信息。可是這個方法只在程序運行的時候纔會調用,若是咱們這個程序已經進入了後臺,退出程序的話,會不會調用這個方法?是不會的啊。

//程序退出
- (void)applicationWillTerminate:(UIApplication *)application {
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    NSLog(@"Terminate");

 

這些東西,咱們如今先用做了解。你們如今知道,何時會調用什麼東西就行。

 

今天最重要的,是咱們要掌握如何使storyboard和代碼間建立一個聯繫。能夠多去本身嘗試一下。那下面有一些經常使用的XCode快捷鍵,你們能夠記一下

 

(1)Xcode快捷鍵
主界面:
Command  + R   運行
Command  + .   中止運行
Command  + B  編譯
Command  + H  隱藏Xcode
Command  + N  新建文件
Command  + shift + N  新建工程
Command  + O  打開文件
Command  + 數字鍵(1-8)  navigator欄
Command  + 數字鍵0  隱藏navigator欄
Command  + Y  開啓控制檯
Command  + option + 0  開啓/隱藏utilities欄
Command + return  標準模式
Command + option + return  輔助編輯模式


代碼:
Command + control + 方向鍵  .h/.m文件切換
Command  + [  向左縮進
Command  + ]  向右縮進
Command  + option + [  上移
Command  + option + ]  下移
Command  + Y  開啓斷點
Command  + \  加入斷點
Command + K  清空控制檯


文檔:
Command  + ‘+’  放大
Command  + ‘-’   縮小
Command  + ‘=’ 適應
View Code
相關文章
相關標籤/搜索