Xcode介面簡介

來源:互聯網
上載者:User

標籤:

建立 Object-C 程式

 

進入主介面方式 : 開啟 Xcode 之後, 可以使用 Xcode 菜單, 但是必須建立一個 Object-C 工程 或者 匯入 一個 Object-C 工程才可以進入主介面;

-- 開啟現有工程 : 點擊右邊的記錄, 就可以開啟現有的工程;

-- 建立工程 : 點擊第一個 Create a new Xcode Project 即可建立一個新工程;

-- 匯入工程 : 點擊 Check out an existing project 可以匯入一個已經建立的工程;

 

建立一個命令列程式 : 選擇 建立工程介面的 OS X --> Command Line Tool 程式, 即建立了一個命令列程式, Cocoa Application 是建立有介面的程式;

-- ios 項目 : ios項目是為手機和平板開發的應用;

-- OS X 項目 : OS X 是為 OS 作業系統建立的應用;

 

建立工程 : 註明 工程名, 公司名稱, 類型;

-- Product Name : 工程名稱;

-- Organization Name : 組織名稱;

-- Type : 這裡選 Foundation, 這是 Object-C 工程;



 建立 IOS 項目

 

 

開啟 Xcode 並選擇建立新工程 : 快顯功能表中選擇 IOS --> Single View Application 工程;

 

填寫項目資訊 : 

-- Product Name : 項目名稱;

-- Organization Name : 公司標識;

-- Class Prefix : 為了避免使用者定義類與 Object-C 類命名衝突問題, 在每個類之前都加上這個首碼;

-- Devices : 選擇應用啟動並執行裝置, Universal 表示同事相容 ipad 和 iphone;

 

Xcode 介面詳解

 

1. Xcode 介面簡介

 

 

(1) 頂部地區 

 

程式運行相關 : 

-- 從左至右介紹 : 運行按鈕, 停止按鈕, 為工程選擇運行平台;

 

編輯器相關 : 

-- 從左至右介紹 : 標準編輯器, 輔助編輯器, 版本編輯器;

 

面板控制相關 : 

-- 從左至右介紹 : 隱藏左側面板, 隱藏底部面板, 隱藏右側面板;

 

 

(2) 左面板

 

 

面板介紹 : 該面板是 Xcode 工程導航面板, 上方的七個按鈕用於切換導航模式;

 

 

(3) 底部面板

 

 

面板介紹 : 用於 Xcode 顯示 控制台調試輸出資訊;

 

 

(4) 右面板

 

檢查器面板 : 根據項目的不同, 包含大量審查器;

 

庫面板 : 

-- 庫面板簡介(從左至右) : 檔案模板庫, 程式碼片段庫, 物件程式庫, 媒體庫;

 

 

(5) 詳細編輯區

 

該地區是代碼編寫主要區域 

 

 

 

 

2. 導航面板詳解

 

導航面板簡介 : 

-- 從左至右 : 項目導航, 符號導航, 搜尋導航, 問題導航, 測試導航, 調試導航, 斷點導航, 日誌導航;

 

(1) 項目導航

 

 

項目導航組成 : 

-- 源檔案 : 在 HelloWorld 目錄下的 ".h" 和 ".m" 尾碼檔案是源檔案;

-- 屬性檔案 : 在 HelloWorld 下的 Supporting Files 目錄下是屬性檔案 圖片等;

-- 單元測試項目 : HelloWorldTest 是工程的單元測試項目;

-- 目標應用 : Products 目錄下的 HelloWorld.app 是目標應用;

 

 

(2) 符號導航

 

 

符號導航簡介 : 用符號顯示工程中的 類, 項目 和 屬性;

-- 表示方式 : C 表示類, M 表示方法, P 表示屬性;

-- 快速定位 : 點擊對應的方法或者屬性, 能快速定位到這個類中;

 

 

(3) 搜尋導航

 

 

搜尋導航簡介 : 在搜尋方塊中輸入要搜尋的字串, 按斷行符號就可以搜尋出包含該字串的類;

 

 

(4) 問題導航面板

 

 

問題導航面板簡介 : 顯示項目中存在的警告或者錯誤;

 

 

(5) 測試導航

 

 

測試導航簡介 : 點擊 testExample 後面的執行按鈕, 就會運行該單元測試;

 

 

(6) 調試導航

 

 

調試導航簡介 : 調試導航面板中顯示了各線程的詳細資料;

 

添加斷點 : 在 OCTViewController.m 中添加一個斷點;

 

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

 

調試面板介紹 :  下面從左至右介紹;

-- Continue program execution : 繼續執行下面的代碼;

-- Step over : 單步調試, 點擊一次該按鈕, 執行一行代碼, 如果有方法調用, 不會進入方法中;

-- Strp in : 步入調試, 點擊該按鈕, 會進入方法中;

-- Step out : 步出調試, 在方法中, 點擊該按鈕, 會退出方法, 執行方法外的單步調試;

 

 

(7) 斷點導航

 

 

斷點導航簡介 : 列出所有的斷點, 方便管理斷點;

 

 

(8) 日誌導航

 

 

日誌導航簡介 : 列出項目開發過程中 構建, 產生, 運行過程, 每次該過程都可以通過日誌面板查看;

 

 

 

3. 檢查器面板

 

檢查面板分類 : 

-- 普通源檔案 : 包含 檔案檢查器 和 快速協助器;

-- 故事版 : 介面檔案, 除了檔案檢查器 和 快速協助器之外, 還有 身份檢查器, 屬性偵測器, 大小檢查器, 串連檢查器;

 

檔案檢查器 : 

-- Identity and Type : File Name(檔案名稱), File Type(檔案類型), Full Path(路徑);

-- Text Settings : Text Encoding(檔案編碼使用字元集), Indent Using(縮排), Wrap lines(自動換行);

 

快速協助器 : 將游標停留在系統類別的時候, 該面板會顯示該類的 參考手冊, 使用指南 和 範例程式碼;

 

 

介面設計相關檢查器 : 使用者選中 ".storyboard" 或者 ".xib" 尾碼的檔案時, 會多出另外四個檢查器;

-- 身份檢查器 : 管理介面組件類 實作類別, 恢複ID 等標識性的屬性;

-- 屬性偵測器 : 管理介面組件 展開方式, 背景色 等屬性;

-- 大小檢查器 : 管理介面組件 寬高 xy軸座標 等屬性;

-- 串連檢查器 : 管理介面組件 與程式碼之間的關聯性;

 

 

4. 庫面板

 

 

庫面板簡介 : 從左至右介紹;

-- 檔案庫模板 : 管理檔案模板, 可以快速建立指定類型檔案, 可以直接拖入項目中;

-- 程式碼片段庫 : 管理各種程式碼片段, 可以直接拖入原始碼中;

-- 物件程式庫 : 介面組件, 可以直接拖入 故事板中;

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

 

Xcode 協助系統詳解

 

協助系統作用 : Object-C 開發中需要調用很多系統的類, 需要瞭解每個類的 用法, 通過 Xcode 協助系統可以查詢這些類的用法;

 

 

1. 快速協助面板

 

 

右面板中的快速面板顯示內容 : 該類繼承的父類, 遵循的協議, 類所在架構, 點擊Reference 中的連結, 可以進入類的詳細介紹;

 

類詳細介紹頁面 : 通過 快速協助面板 中的 Reference 中的連結, 可以進入該頁面;

 

類方法分類介面 : 該介面與詳細介紹介面是同一個, 下拉即可;

 

2. 直接搜尋

 

搜尋 : 通過任意連結進入類詳細介紹介面之後, 可以在上方的輸入框中輸入關鍵字, 即可搜尋相關的 類, 方法, 協議 或者 函數;

 

3. 代碼自動提示

 

提示方式 : 代碼編輯地區, 按住 option 鍵, 然後將游標移動到類上, 會變成問號, 點擊就會出現下面的提示框;

 

 

1. 副檔名介紹

 

C語言源檔案尾碼 : ".c";

C++語言源檔案尾碼 : ".cc", ".cpp";

標頭檔 : ".h";

Object-C來源程式 : ".m";

Object-C++來源程式 : ".mm";

C/C++/Object-C/Object-C++產生的中間檔案 : ".o";

C/C++/Object-C/Object-C++產生的可執行檔 : ".out";

 

 

2. 程式源碼及解析

 

程式源碼 

 

/* 匯入 Foundation 架構下的 Foundation.h 檔案 */#include <Foundation/Foundation.h>/* 程式入口函數 */int main(int argc, char * argv[]){/* 自動釋放池, 該環境中執行的語句會自動回收所建立的對象 */@autoreleasepool{/* Foundation 中的輸出函數, 可輸出字串, 對象等 */NSLog(@"Hello World"); /* @"Hello World", 加上 @ 是為了與 C 中的字串區分 */}return 0;}



 

(1) 匯入架構標頭檔

 

匯入標頭檔語句 : #import <a/b.h> 是匯入 a 架構 中的 b.h 標頭檔;

 

架構簡介 : 架構是 一系列類 函數的集合, Cocoa QuickTime 都被封裝成了架構, Cocoa 包括了 Foundation 和 Application Kit 等組件;

 

 

(2) 自動釋放池

 

記憶體管理 : 在早期的 Object-C 需要手動管理記憶體的分配和回收, Object-C 2.0 引入了 ARC(自動引用計數) 和 自動釋放池, 不在進行手動記憶體管理;

 

自動釋放池 : 使用 "@autoreleasepool{}" 包裹的代碼位於 Object-C 的自動釋放池中, 這些語句會自動回收建立的對象, 不用進行手動的記憶體管理;

 

 

(3) 字串輸出

 

NSLog()函數 : 該函數是 Foundation 架構提供的一個函數, 該函數可以輸出 字串 對象等;

-- NS 首碼說明 : Cocoa 架構中所有的 類 函數 常量 都會加上 NS 首碼;

-- @"string" 說明 : @符號 用於區分 Object-C 與 C語言字串, 加上 @ 符號的時 Object-C 字串;

 

 

3. 編譯運行代碼

 

LLVM Clang 編譯器文法 : clang -fobjc-arc -framwork 架構名稱 來源程式 -o 輸出結果 ;

-- -fobjc-arc 參數 : 啟用 Object-C 的 ARC 自動技術功能;

-- -o 參數 : 如果不帶, 預設 輸出 a.out ;

 

編譯執行結果 : 

 

octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 01-HelloWorld.m octopus-2:ios octopus$ ls01-HelloWorld.ma.outoctopus-2:ios octopus$ ./a.out 2014-08-10 00:22:55.670 a.out[3394:507] Hello World

 LLDB(就是Xcode下方的調試欄)中有用的一些命令
    列印協助
    列印調用棧
    列印最基本的內容 (p)
    列印對象(po)
    列印運算式(expr)
    列印線程中的一些東西

 

LLDB  常用命令

假如你準備在模擬器裡面運行這個,你可以在“(lldb)”提示的後面輸入下面的:

(lldb) po $eax

LLDB在xcode4.3或者之後的版本裡面是預設的調試器。假如你正在使用老一點版本的xcode的話,你又GDB調試器。他們有一些基本的相同的命令,因此假如你的xcode使用的是“(gdb)”提示,而不是“(lldb)”提示的話,你也能夠更隨一起做,而沒有問題。

“po”命令是“print object”(列印對象)的簡寫。“$eax”是cup的一個寄存器。在一個異常的情況下,這個寄存器將會包含一個異常對象的指標。注意:$eax只會在模擬器裡面工作,假如你在裝置上調試,你將需要使用”$r0″寄存器。

例如,假如你輸入:

(lldb) po [$eax class]

你將會看像這樣的東西:

(id) $2 = 0x01446e84 NSException

這些數字不重要,但是很明顯的是你正在處理的NSException對象在這裡。

你可以對這個對象調用任何方法。例如:

(lldb) po [$eax name]

這個將會輸出這個異常的名字,在這裡是NSInvalidArgumentException,並且:

(lldb) po [$eax reason]

這個將會輸出錯誤訊息:

(unsigned int) $4 = 114784400 Receiver () has no segue with identifier ‘ModalSegue‘

 

注意:當你僅僅使用了“po $eax”,這個命令將會對這個對象調用“description”方法和列印出來,在這個情況下,你也會得到錯誤的訊息。

 

 

 

實用LLDB命令

命令名 用法 說明

 
expr expr 運算式 可以在調試時動態執行指定運算式,並將結果列印出來,很有用的命令。
po po 運算式 與expr類似,列印對象,會調用對象description方法。是print-object的簡寫
print print (type) 運算式 也是列印命令,需要指定類型。
bt bt [all] 列印呼叫堆疊,是thread backtrace的簡寫,加all可列印所有thread的堆棧。
br l br l breakpoint list的簡寫
process continue l process continue 簡寫:c
thread step-in l thread step-in l 簡寫:s
thread step-inst l thread step-inst l 簡寫:si
thread step-over l thread step-over l 簡寫:n
thread step-over-inst l thread step-over-inst l 簡寫:ni
thread step-out l thread step-out l 簡寫:f
thread list thread list 簡寫:th l

 

 

  記憶體流失隱患提示
Potential Leak of an object allocated on line ……
資料賦值隱患提示
The left operand of …… is a garbage value;
對象引用隱患提示
Reference-Counted object is used after it is released;

對retain、copy、init、release、autorelease等在計數時的使用方式的詳細講解,推薦一下:

http://www.cnblogs.com/andyque/archive/2011/08/08/2131236.html

調用autorelease這意味著,你可以在這個函數裡面使用vari,但是,一旦下一次run loop被調用的時候,它就會被發送release對象。然後引用計數改為0,那麼記憶體也就被釋放掉了。(關於autorelease到底是怎麼工作的,我的理解是:每一個線程都有一個autoreleasePool的棧,裡面放了很多autoreleasePool對象。當你向一個對象發送autorelease訊息之後,就會把該對象加到當前棧頂的autoreleasePool中去。噹噹前runLoop結束的時候,就會把這個pool銷毀,同時對它裡面的所有的autorelease對象發送release訊息。而autoreleasePool是在當前runLoop開始的時候建立的,並壓入棧頂。那麼什麼是一個runLoop呢?一個UI事件,Timer call, delegate call, 都會是一個新的Runloop。)

 

 

 

Xcode介面簡介

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.