iOS Xcode全面剖析

?

?

前言

前幾天在公司內部做了一次關于iOS的入門分享,聽眾有PHP、Web、Android、測試、產品、UI等,主旨是力求不懂iOS的人能了解iOS的開發流程,聽后都能創建一個iOS項目并打印HelloWorld。(這是背景)
你想想就這么點需求,沒啥東西吧,又因為最近項目還特別忙就什么也沒有準備,以至于分享中就有了一些小尷尬::>_<::
總結下來,像聽眾有技術和非技術這樣而且是不懂iOS得其實是最難兼顧的,不準備還不是等死。。。

當然最大的感受還是自己掌握的iOS基礎太渣,對于一個沒有接觸過iOS的技術或非技術,視角不一樣看到的東西就不一樣,他會對所有的東西都好奇都想知道是怎么回事,所以他會問一些iOS開發中不重要但是確實是屬于iOS的問題,so隨著分享的深入什么設計模式MVVM、runtime、亂七八糟的都講了,但也掩蓋不了自己基礎的薄弱,所以近期打算重新梳理一下自己的iOS知識體系,把自以為自己懂得的知識好好總結,用博客的形式表現出來,畢竟寫博客是最能檢驗一個人知識鞏固好壞的方法了,最近一段時間一直在寫PHP、JS等方向的分享,是時候回歸一下本職了,希望能幫助自己鞏固基礎更希望能幫助跟我一樣基礎不是那么牢固的童鞋們

一、創建新一個工程

Xcode一直沒有升級%>_<%,目前最新版本是Xcode7.3了,但本篇依據的是我目前使用的Xcode7.1.1,不過區別也不會很大的。

1、第一步打開Xcode,找到Xcode程序圖標并點擊

2、如下界面,我們點擊新建一個項目,即第二項

?

?

?

?

1、Get started with a playground

Playground是蘋果公司在2014年WWDC(蘋果開發者大會)隨Swift一起推出的,可以實現一邊寫代碼,一邊預覽效果(即實時預覽代碼的效果)的工具。
相對于以前寫代碼要經過Build→Run漫長的等待才能看到代碼的效果來說,Playground給程序員帶來的方便不言而喻。
Playground的不足之處是:無法直接將Playground文件直接用到工程中,暫時不支持Objective-C 。
我們開發者可以利用Playground來快速測試一些代碼和效果。

2、Create a new Xcode project

創建一個新的Xcode項目,一般正式的項目都是從此選項開始的。

3、Check out an existing project

打開一個已經存在的項目

3、選擇一個項目模板創建,如下,圖中已經標出不同,并點擊Next

左側欄:
左側欄中四個分類分別代表了手機/pad、手表、電視、及PC端的開發選項,就是一款Xcode足可以開發蘋果所有產品線中的所有軟件,是不是特別叼?
Application:即創建一個完整的項目。
Framework & Library:即寫一個框架或者庫(這個初學者用不到,但是等入門之后會發現這個很有用的,具體不在闡述,這可以再引申出一大篇文章了)

右側詳細:
各種預定義的模板,具體可從圖中顯示看出各個模板的樣式,一般而言項目會選擇最簡單的即第三個模板。

?

4、填寫并選擇一些所創建項目的信息,如下并點擊Next

1、Product Name
項目名稱,比如本例中名稱就是XcodeIntroduction(駝峰式命名)

2、Organization Name
組織或公司的名稱,目前是王隆帥(本人_),可隨便寫。

3、Organization Identifier
組織或名稱的標識,目前是本人所在的公司,可隨便寫。

4、Bundle Identifier
程序包標識,新建項目時是根據你創建的項目名稱自動生成的不可更改,可在內部修改。

5、Language
開發語言選擇,目前Xcode提供Objective-C、Swift兩個選擇,這里選擇OC。

6、User Core Data
是否使用CoreData,iOS開發常用的一種數據庫。

7、Include Unit Tests
是否添加模塊單元測試Target

8、Include UI Tests
是否添加UI單元測試Target

5、選擇路徑創建項目,如下圖,選擇桌面,并點擊Create。

?

1、create Git repository on My Mac

是否創建版本控制系統,創建的話可以選擇是在本地還是在服務器。版本控制系統,或者說修改控制系統,實際上是一種檢測源文件的改變并將其保存留作以后參考使用的機制(軟件)。此外,它還能記錄其他有用信息,比如是哪個開發者修改了代碼,何時修改的,修改了哪一部分,以及其他歷史信息。版本控制系統可以比較不同版本代碼的不同,有必要時能恢復整個項目到以前的版本,追蹤有害代碼從而減少產品的錯誤。
通過版本控制系統,開發者可以在一個項目的不同分支上工作,當項目的各個部分開發完備時,將它們放到一起形成最終的版本,這個過程被稱為合并。事實上,這種做法再團隊和軟件公司中相當常見:每個人負責項目的一部分,最終所有部分被整合到一起形成最終產品。

6、創建成功后的界面如下

此界面就是Xcode的主界面了,接下來,會帶你一點點揭開Xcode神秘的面紗,66666。

二、Xcode界面詳細介紹

五大區域介紹,如下圖

1、 第一部分:頂部區域

① 程序運行相關:
從左至右依次:運行按鈕、停止按鈕、為工程選擇運行平臺。

② 編輯器相關:
從左至右依次:標準編輯器、輔助編輯器、版本編輯器。

③ 面板控制相關:
從左至右依次:隱藏(顯示)左側面板、隱藏(顯示)底部面板、隱藏(顯示)右側面板。

2、第二部分:左面版
該面板是 Xcode 工程導航面板, 上方的八個按鈕用于切換導航模式。從左至右 :?項目導航、符號導航、 搜索導航、 問題導航、 測試導航、 調試導航、 斷點導航、 日志導航。

① 項目導航

?

項目導航組成 :

源文件 :在 XcodeIntroduction 目錄下的 ".h" 和 ".m" 后綴文件是源文件;
屬性文件 :在 XcodeIntroduction 下的 Supporting Files 目錄下是屬性文件 圖片等;
單元測試項目 :XcodeIntroductionTests、XcodeIntroductionUITests 是工程的單元測試項目;
目標應用 :Products 目錄下的 XcodeIntroductionTests.app 是目標應用;

② 符號導航

?

符號導航簡介 : 用符號顯示工程中的 類, 項目 和 屬性;
表示方式 :C 表示類, M 表示方法, P 表示屬性;
快速定位 :點擊對應的方法或者屬性, 能快速定位到這個類中;

③ 搜索導航

?

在搜索框中輸入要搜索的字符串, 按回車就可以搜索出包含該字符串的類;

④ 問題導航

?

顯示項目中存在的警告或者錯誤;

⑤ 測試導航

?

點擊 testExample 后面的執行按鈕, 就會運行該單元測試;

⑥ 調試導航

?

調試導航面板中顯示了各線程的詳細信息;

⑦ 斷點導航

?

?

列出所有的斷點, 方便管理斷點

⑧ 日志導航

?

列出項目開發過程中構建、生成、運行過程,每次該過程都可以通過日志面板查看

3、第三部分:調試面板

?

用于 Xcode 顯示 控制臺調試輸出信息。

① 添加斷點
如上圖,在第20行打印“王隆帥的簡書”代碼上添加一個斷點。

② 開始調試(自動判斷)
點擊頂部面板中的調試按鈕, 如果代碼中有斷點, 就會自動進入調試狀態, 執行到斷點時會自動停止, 詳細調試信息顯示在底部的調試輸出面板;

③ 調試面板按鈕介紹(上圖紅框中從左至右)
1、Continue program execution :繼續執行下面的代碼;
2、Step over :單步調試, 點擊一次該按鈕, 執行一行代碼, 如果有方法調用, 不會進入方法中;
3、Strp in :步入調試, 點擊該按鈕, 會進入方法中;
4、Step out :步出調試, 在方法中, 點擊該按鈕, 會退出方法, 執行方法外的單步調試;
5、點擊會出現此時項目的視圖層次結構
6、點擊會讓你選擇你的地理位置

4、第四部分:右面板
包括兩個部分上側的檢查器面板和下側的庫面板。


① 檢查器面板

檢查面板分類 :
普通源文件 :包含?文件檢查器和?快速幫助器;
故事版 :界面文件, 除了文件檢查器和?快速幫助器之外, 還有?身份檢查器,?屬性檢查器,?大小檢查器,?連接檢查器;

1)文件檢查器

?

Identity and Type :File Name(文件名), File Type(文件類型), Full Path(路徑);
Text Settings :Text Encoding(文件編碼使用字符集), Indent Using(縮進), Wrap lines(自動換行);

2)快速幫助器

界面設計相關檢查器


用戶選中 ".storyboard" 或者 ".xib" 后綴的文件時, 會多出另外四個檢查器;

3)身份檢查器

管理界面組件類 實現類, 恢復ID 等標識性的屬性;

4)屬性檢查器

管理界面組件 拉伸方式, 背景色 等屬性;

5)大小檢查器

管理界面組件 寬高 xy軸坐標 等屬性;

6)連接檢查器

?

?

:

管理界面組件 與程序代碼之間的關聯性;


② 庫面板(從左至右)

項目的各種庫文件,方便查找使用。

1)文件模板庫

?

管理文件模板, 可以快速創建指定類型文件, 可以直接拖入項目中;

2)代碼片段庫

管理各種代碼片段, 可以直接拖入源代碼中;

3)對象庫

界面組件, 可以直接拖入 故事板中;

4)媒體庫

管理各種 圖片, 音頻 等多媒體資源;


5、第五部分:詳細編碼區
該區域是代碼編寫的主要區域。

三、Xcode菜單詳解

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

四、Xcode快捷鍵介紹

Xcode中的快捷鍵確實會讓人眼花繚亂,在此只介紹主界面上按鈕點擊的快捷鍵(有很強的記憶規律),代碼相關、運行相關的代碼可以看這里,這里面的道道還是很多的YoY

1、第一個需要知道的是Xcode的各區域與修飾鍵的關系,下面是一個快速瀏覽

Command:用來導航,控制導航區域
Alt:控制右邊的一些東西,比如Assistant Editor,utility editor
Control:編輯區域上的Jump bar的一些交互

如下圖

?

?

下面是最常用的組合鍵:

Command 1~ 8:跳轉到導航區的不同位置
Command 0 :顯示/隱藏導航區
Command Alt 1~ 6:在不同檢測器之間跳轉
Command Alt 0:顯示/關閉工具區.
Control Command Alt 1~4:在不同庫之間跳轉
Control 1~ 6:在Jump bar的不同標簽頁的跳轉。

最后也是最簡單的就是回車鍵,當它和Command組合使用時,可以是你在Xcode中不同編輯器來回切換。

Command + Enter:顯示標準單窗口編輯器
Command Alt Enter:你可以猜下它的作用,它的功能是打開Assistant editor
Command Alt Shift Enter:打開版本控制編輯器

同樣重要的是顯示/隱藏調試區的快捷鍵是?Command + Shift + Y,要記住這個你可以通過這句話來記憶 “Y is my code not working?” (譯者注:Y諧音Why)。
如果你忘記了一些快捷鍵,你可以在Xcode的菜單欄Navigate一項中找到大部分快捷鍵。在即將完成這一部分的學習之時,你會驚奇的發現你僅僅只是用了鍵盤就讓Xcode發生這各種變換。

五、結語

工欲善其事必先利其器, Xcode如此叼, 掌握了它, iOS還不隨你玩!目前最新的版本為Xcode7.3, 提醒大家, 謹慎升級, 根據認識朋友的升級感受, 目測比較坑, 尤其是自動補全機制, 升級前可自行谷歌先行者的感受...( ⊙o⊙ )千真萬確。

六、參考資料

http://www.360doc.com/content/15/0324/17/20918780_457719719.shtml
http://jingyan.baidu.com/article/4b07be3cb3c94048b380f3de.html
http://www.cocoachina.com/ios/20140524/8536.html
http://blog.csdn.net/shulianghan/article/details/38424965
http://www.jianshu.com/p/8bcdf44b6cf1
http://www.cocoachina.com/ios/20140731/9284.html

?



作者:王隆帥
鏈接:https://www.jianshu.com/p/3c8527898e84
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權并注明出處。

?

?

?

?

?

?

?

?

?

轉載于:https://www.cnblogs.com/LifeTechnologySupporter/p/9710715.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253415.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253415.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253415.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VS2013編譯OBS源碼

obs源碼來之&#xff1a;https://sourceforge.net/projects/obsproject/ 下載源碼之后直接打開sln索引文件就行 項目打開之后 obs作為啟動項 直接編譯就行&#xff0c;正常應該一下就能編譯成功。 在運行的時候可能會報錯&#xff1a; 這個問題就需要制定一下編譯輸出路徑&…

Y/C分離/2/3D濾波器

待整理http://blog.csdn.net/yangzhifu/article/details/7388101 http://wenku.baidu.com/view/f997d705cc1755270722086d.html

構建之法閱讀筆記04

敏捷開發是一系列價值觀和方法論的集合。在敏捷的大旗下&#xff0c;我們可以看到好幾種軟件開發的方法論&#xff0c;我們在這里主要分析Scrum這個方法論。 從Scrum方法論中分析&#xff0c;敏捷開發一共分四步&#xff1a; 第一步&#xff1a;找出完成產品需要做的事情——Pr…

js圖片切換

1.不同方式的圖片切換 功能點:   1.頁面默認循環切換,循環切換按鈕獲得焦點   2.點擊順序切換時,順序切換按鈕獲得焦點     點擊上一張時,當圖片為第一張時,圖片不再進行切換,圖片張數和描述也不在變動;     點擊下一張時,當圖片為最后一張時,圖片不再進行切換,圖片…

網絡攝象機常用傳輸協議

多播路由是一個很好的技術&#xff0c;在Internet上實現了對數據的“廣播”&#xff0c;不同于廣播的是&#xff0c;由于廣播風暴的問題&#xff0c;路由器是禁止廣播數據跨路由傳送的。而多播則很好的解決了這個問題。現在M$軟件如&#xff1a;Netmeeting&#xff0c;WMS就廣泛…

CIS關鍵工藝技術概覽

相機作為一種媒介&#xff0c;可以記錄光所體現的物體&#xff0c;使人們能夠主觀或客觀地表達各種情感和思想。當代人類身處于一個所謂的“數字游牧時代”&#xff0c;人們攜帶各類移動數碼設備&#xff0c;生活不受時空的限制。在當今時代&#xff0c;相較于膠片相機&#xf…

Properties

Properties配置文件說明 Properties類對應.properties文件。文件內容是鍵值對&#xff0c;鍵值對之間使用""或空格隔開。開頭是"#"的表示注釋Properties類在加載.properties文件時使用的iso8859-1的編碼。所以這個文件中的中文要特殊處理&#xff1a;如果這…

1215 - Cannot add foreign key constraint

2019獨角獸企業重金招聘Python工程師標準>>> 參考網頁 https://blog.csdn.net/yiwangxiblog/article/details/52269527 https://blog.csdn.net/ytm15732625529/article/details/53729155 原因--親測 兩張表的存儲引擎不一致。主鍵所在表和外鍵所在表的存儲引擎改成一…

陳敏敏-130242014024-實驗一

實驗報告一 課程 軟件體系結構與設計 實驗名稱 軟件設計的網絡環境 第 頁 專業 軟件工程 班級 1班 學號 130242014024 姓名 陳敏敏 實驗日期&#xff1a; 2017 年 9 月 14 日 報告退發 (訂正 、 重做) 一、實驗目的 1.復習軟件工程的重要概念&…

音頻編碼

http://jsjdmtjs.jpk.dlpu.edu.cn/jxzy/kecheng/4-2.html

jquery 滾動條位置的

$(#fixedHead).width()//div的寬度 $(#fixedHead)[0].scrollWidth//滾動條的寬度 兩者的差為滾動條的寬度var b1$("#div1").height();//div的高度 var b2$(this)[0].scrollTop;//滾動條距離頂端的位置 var b3$(this)[0].scrollHeight;//滾動區的高度 b3b1b2滾動條到底…

Css3實現波浪線效果1

一、波浪線 &#xff0c;常用 .info::before {content: ;position: absolute;top: 30px;width: 100%;height: 0.25em;background:linear-gradient(135deg, transparent, transparent 45%, #008000, transparent 55%, transparent 100%),linear-gradient(45deg, transparent, tr…

ZZUOJ 10508: 數列游戲IV

題目鏈接&#xff1a;http://acm.zzu.edu.cn:8000/problem.php?id10508 題目大意&#xff1a;給定一個序列&#xff0c;長度為N&#xff0c;每次詢問為一組區間[Li,Ri],輸出Li到Ri中出現恰好兩次的不同數的個數. N,M<2*10^5&#xff0c;序列中元素<10^9 解題思路&#x…

dm368ipnc 重寫架構中的swosd 實現中文osd

appro的ipnc中只實現了英文的osd疊加&#xff0c;就連小小的ascii碼表都沒有覆蓋全&#xff0c;而且該swosd架構灰常凌亂。 其實無非就是兩個功能&#xff0c;一是疊加文字&#xff0c;而是疊加圖片&#xff0c;由于考慮到兼容不同的分辨率的視頻流&#xff0c;所以處理的分支相…

JAVA加密算法系列-AesCBC

package ***;import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec;import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder;/** * AES 是一種可逆加密算法&#xff0c;對用戶的敏感信息加密處理 * 對原始數…

dubbo系列(一)

進入官網之后&#xff0c;找到 http://dubbo.apache.org/en-us/docs/user/quick-start.html 有一個鏈接跳轉到這里 http://dubbo.apache.org/en-us/docs/admin/install/provider-demo.html 使用git將項目下載下來 修改如下Service實現類 1 /*2 * Licensed to the Apache Softw…

基于Flask實現后臺權限管理系統 - 表設計

1.1. 設計 1.1.1. 用戶表 用戶表記錄系統中的所有用戶&#xff0c;是權限管理系統最基本的部分&#xff0c;和其他權限表都有一定的關聯關系&#xff0c;同時&#xff0c;一個還有一個重要的功能&#xff1a;系統登陸。 名稱 數據類型 允許空值 默認值 描述 ID VARCHAR …

DM8168的McSPI/McASP/McBSP接口

McSPI接口 SPI管腳&#xff1a; 管腳 類型 描述 SPI_SCLK I/O SPI串行時鐘&#xff08;MASTER時&#xff1a;輸出&#xff1b;SLAVE&#xff1a;輸入&#xff09; SPI_D0 I/O 能被配置為輸入或輸出&#xff08;MOSI&#xff1a;master out&#xff0c;slave in或MISO&…

Sencha ID的注冊

sencha id的注冊用不著翻墻&#xff0c;直接訪問下面的地址https://www.sencha.com/forum/register.php輸入你的個人信息敞開來注冊&#xff0c;我的注冊名為charlie2018w非常順利的過程你免費注冊的id只能用30天。擁有這個id你就可以在eclipse或者sencha artchitect3或者webst…

ansible安裝

1、簡介 ansible是新出現的自動化運維工具&#xff0c;基于Python開發&#xff0c;集合了眾多運維工具&#xff08;puppet、cfengine、chef、func、fabric&#xff09;的優點&#xff0c;實現了批量系統配置、批量程序部署、批量運行命令等功能。ansible是基于模塊工作的&#…