Xcode使用技巧

Xcode菜單

Xcode快捷鍵

常用快捷鍵 功能
command + shift + N 新建項(xiàng)目
command + N 新建文件
command + delete 刪除一行
command + Z 撤銷上一步操作
command + / 注釋
command + ] 或者 [ 前后縮進(jìn)
command + option + ] 或者 [ 一行代碼上下移動(dòng)
command + control + 上下方向鍵 .h .m 文件切換
command + 左右方向鍵 光標(biāo)移動(dòng)到行頭或行尾
command + control + 左右方向鍵 后退和前進(jìn)
command + R 運(yùn)行
command + B 編譯
command + shift + k clean緩存
shift + 上下?方向鍵 選中代碼
command + , 打開(kāi)偏好設(shè)置
command + option + Enter 顯示輔助編輯器
command + Enter 返回標(biāo)準(zhǔn)編輯器
command + 0 打開(kāi)/隱藏左側(cè)導(dǎo)航區(qū)域
command + option + 0 打開(kāi)/隱藏右側(cè)工具區(qū)域
command + shift + Y 打開(kāi)/隱藏下方調(diào)試區(qū)域
command + shift + o 彈出快速查找文件窗口
command + shift + 0 打開(kāi)官方文檔窗口

日常開(kāi)發(fā)技巧

修改工程名书释、類名

Xcode里修改工程名、類名??

Xcode 環(huán)境配置

Xcode 環(huán)境配置最佳實(shí)踐

代碼區(qū)樣式設(shè)置

進(jìn)入 Xcode 偏好設(shè)置(快捷鍵 ?+, ),切換至字體顏色與設(shè)置面板(Fonts & Colors),你可以選擇預(yù)設(shè)的幾個(gè)風(fēng)格,也可以嘗試自定義配色益眉,比如我們要把背景色換成蘋(píng)果綠,則需要把 Background 這一項(xiàng)的 Hex color 值設(shè)置為#C7EDCC

快速查找、切換文件

當(dāng)你工作在一個(gè)龐大的項(xiàng)目中時(shí)坝初,使用【快速打開(kāi)】功能可以為你提供很大的便利。

具體方法是:打開(kāi) File 菜單钾军,選擇 Open Quickly 子菜單(快捷鍵:?+Shift+O )鳄袍,輸入關(guān)鍵字即可過(guò)濾文件,按回車鍵(?)即可快速打開(kāi)切換到該文件:

快速更改同名變量

  1. 在代碼編輯區(qū)域吏恭,點(diǎn)擊定位需要更改名稱的變量拗小;
  2. 打開(kāi) Edit 菜單,選擇 Refactor 子菜單中的 Rename… 命令樱哼。 此命令允許您統(tǒng)一修改文檔中的某個(gè)變量哀九。
  3. 輸入該變量的新名稱 —> 預(yù)覽 —> 保存。

統(tǒng)一修改某一方法內(nèi)某一變量名

快捷鍵:Cmd + Control +e

  1. 在方法中搅幅,點(diǎn)擊選擇變量名勾栗;
  2. 打開(kāi) Editor 菜單,選擇 Edit All in Scope 命令盏筐。 在目標(biāo)區(qū)域內(nèi)編輯全部子菜單围俘。
  3. 點(diǎn)擊鍵盤(pán)修改變量名,所有同名變量就會(huì)被同步更改。

選中整個(gè)方法體

打開(kāi) Editor 菜單界牡,選擇 Structure 子菜單中的 Balance Delimiter… 命令簿寂。平衡界定符命令能幫助你選擇整個(gè)方法體。

代碼的查找和替換

  1. 打開(kāi) Find 菜單宿亡,選擇 Find and Replace 子菜單常遂。
  2. 輸入要查找的關(guān)鍵詞和要替換的新名稱。
  3. 你可以選擇替換當(dāng)前的代碼和所有符合的代碼挽荠。

將代碼段提取為方法

  1. 拖動(dòng)選中需要提取的代碼克胳;
  2. 打開(kāi) Edit 菜單,選擇 Refactor 子菜單中的 Extract… 命令圈匆。此命令允許您將一段代碼轉(zhuǎn)化為一個(gè)方法漠另。
  3. 輸入新建的方法名稱 —> Preview預(yù)覽 —> 保存。

提取后的結(jié)果:

- (void)addImage {
    UIImage *image = [UIImage imageNamed:@"github"];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    [self.view addSubview:imageView];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self addImage];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

代碼自動(dòng)補(bǔ)全

這個(gè)是最常用的方法了:

  1. 打開(kāi) Editor 菜單跃赚,選擇 Show Completions 命令(快捷鍵 ESC )笆搓。
  2. Xcode就會(huì)列出所有可能的方法供我們選擇。

代碼方法塊的折疊

先定位到某一方法體中纬傲,打開(kāi) Edit 菜單满败,選擇 Code Folding 子菜單:

  • Fold / Unfold :折疊/顯示當(dāng)前方法體中的所有代碼行;
  • Fold / Unfold Methods & Functions :折疊/顯示所有方法體中的所有代碼行叹括;
  • Fold / Unfold Comment Blocks :折疊/顯示注釋塊算墨;
  • Focus Follows Selection :專注于當(dāng)前方法體。

代碼整潔小技巧#pragma mark

pragma 預(yù)處理指令的兩個(gè)作用:

  1. 整理代碼汁雷;
  2. 防止編譯器警告米同;

#pragam mark 一般是寫(xiě)在方法與方法之間的預(yù)處理指令,類似于起注釋說(shuō)明作用摔竿。

但是面粮,重要的是,使用 #pragam mark 預(yù)處理指令可以將方法按照功能分組继低,使代碼更整潔熬苍、更具有邏輯性。而且查找起來(lái)也非常方便袁翁。

#pragam mark 不會(huì)對(duì)代碼本身起任何作用柴底,但是Xcode會(huì)根據(jù) #pragam mark 組織文件中的方法。使用 #pragam mark 后粱胜,代碼編輯器中的跳轉(zhuǎn)欄是這樣顯示的:

代碼編輯器中的跳轉(zhuǎn)欄

使用方法

* 添加分割線

pragma mark —

* 添加功能說(shuō)明

pragma mark 自定義的方法

* 同時(shí)添加分割線和功能說(shuō)明

pragma mark — 自定義的方法(注意留空格)

推薦的代碼組織方式:

經(jīng)常使用 #pragam mark 柄驻,可以使代碼更加清晰有條理。一旦之后需要重新審查代碼焙压,就會(huì)感受到事先使用了 #pragam mark 的好處鸿脓。

推薦閱讀

使用代碼片段庫(kù)

代碼片段抑钟,顧名思義,就是一“塊”嵌入的代碼框架野哭,提前將所需的代碼框架放入代碼片段庫(kù)在塔,可能發(fā)生改動(dòng)的地方用代碼補(bǔ)全占位符代替,使用時(shí)拨黔,用自定義的字符串觸發(fā)相應(yīng)代碼片段蛔溃,在占位符處填寫(xiě)所需代碼即可完成高效率的開(kāi)發(fā)。

代碼片段使用示例 init:

如果在某個(gè) Objective-C 的實(shí)現(xiàn)文件中輸入 init 篱蝇,Xcode 就會(huì)自動(dòng)列出一組備選項(xiàng)贺待,其中包括 init 方法。選擇后零截,Xcode 就會(huì)在當(dāng)前位置加入一段 init 方法的默認(rèn)實(shí)現(xiàn)代碼麸塞。

代碼片段庫(kù)(Code Snippet Library)位于 Xcode 的工具區(qū)域(快捷鍵:??0)庫(kù)面板選擇條中的第二項(xiàng)。

直接打開(kāi)工具區(qū)域和代碼片段庫(kù)面板的快捷鍵:???2

在代碼片段庫(kù)中瞻润,Xcode 自帶的代碼片段是只讀的,不能編輯甜刻,但是我們可以創(chuàng)建自定義的代碼片段绍撞。

添加自定義代碼片段

編輯窗口

編寫(xiě)好你的代碼片段之后,將選中的代碼段拖拽至代碼片段庫(kù) Code Snippet Library 中的編輯窗口如下:

標(biāo)題 說(shuō)明
Title 標(biāo)題
Summary 描述概要說(shuō)明
Platform 平臺(tái):All/ iOS/ Mac OS/ TV OS/ Watch OS
Language 代碼語(yǔ)言:Objective-C 等
Completion Shortcut 代碼片段的觸發(fā)字符串(在源代碼文件中輸入該字符串后得院,會(huì)觸發(fā) Xcode 自動(dòng)加入相應(yīng)的代碼片段)
Completion Scopes 代碼使用范圍:可選類接口部分傻铣、類實(shí)現(xiàn)部分等

代碼補(bǔ)全占位符:<#expression#>

自定義的代碼片段

UITableViewDataSource

把如下一段通用的 UITableViewDataSource 方法選中拖拽入代碼片段庫(kù):

#pragma mark - UITableViewDataSource

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return <#number of section#>;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return <#number of rows#>;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:<#@"reuseIdentifier"#> forIndexPath:indexPath];
    
    // Configure the cell...
    
    return cell;
}

編輯如下:

以后在使用 Objective-C 語(yǔ)言編寫(xiě) iOS 項(xiàng)目時(shí),在類的實(shí)現(xiàn)文件中祥绞,輸入 UITableViewDataSource 非洲,就會(huì)列出該代碼片段備選項(xiàng)。

UITableViewDelegate

UITableView 委托協(xié)議的兩個(gè)實(shí)現(xiàn)方法加入代碼片段庫(kù):

#pragma mark - UITableViewDelegate

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return <#expression#>;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // when selected row of indexPath
    
}

cellReusreIdentifier

static NSString * const cellReusreIdentifier = @"<#UITableViewCellStyleDefault#>";

處理循環(huán)引用經(jīng)常要用到的兩行代碼蜕径,也可以加入代碼片段庫(kù):

weakSelf

__weak __typeof(self)weakSelf = self;

strongSelf

__strong __typeof(weakSelf)strongSelf = weakSelf;

注釋代碼

你也可以根據(jù)你的喜好將注釋代碼添加進(jìn)代碼片段庫(kù)

/** <#注釋#> */

編輯窗口:

聲明了一個(gè)屬性两踏,要寫(xiě)注釋?當(dāng)然你可以輸入 //說(shuō)明兜喻,使用代碼片段就可以這么玩了梦染, 輸入 xx

pragma mark

這個(gè)代碼片段可以配合上面剛剛提到的 代碼整潔小技巧#pragma mark 一起使用,美滋滋??

#pragma mark - <#string#>

NSException

子類有自己的指定初始化方法朴皆,但又不想覆蓋父類的指定初始化方法 init,可以寫(xiě)如下的方法帕识,主要是用來(lái)防止開(kāi)發(fā)創(chuàng)建對(duì)象時(shí)用錯(cuò)初始化方法。

- (instancetype)init {
    @throw [NSException exceptionWithName:@"Method Undefined"
                                   reason:@"Use Designated Initializer Method"
                                 userInfo:nil];
    return nil;
}

編輯自定義代碼片段

選中代碼片段庫(kù)中需要重新編輯的代碼片段遂铡,在彈出的編輯窗口點(diǎn)擊 Edit 按鈕肮疗,完成后點(diǎn)擊 Done 按鈕。

刪除自定義代碼片段

選中代碼片段庫(kù)中需要?jiǎng)h除的代碼片段扒接,鍵盤(pán) Backspace 或者 Del 并確認(rèn)即可刪除代碼片段伪货。

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市超歌,隨后出現(xiàn)的幾起案子砍艾,更是在濱河造成了極大的恐慌,老刑警劉巖巍举,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脆荷,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡懊悯,警方通過(guò)查閱死者的電腦和手機(jī)蜓谋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)炭分,“玉大人桃焕,你說(shuō)我怎么就攤上這事∨趺” “怎么了观堂?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)呀忧。 經(jīng)常有香客問(wèn)我师痕,道長(zhǎng),這世上最難降的妖魔是什么而账? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任胰坟,我火速辦了婚禮,結(jié)果婚禮上泞辐,老公的妹妹穿的比我還像新娘笔横。我一直安慰自己,他們只是感情好咐吼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布吹缔。 她就那樣靜靜地躺著,像睡著了一般锯茄。 火紅的嫁衣襯著肌膚如雪涛菠。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天撇吞,我揣著相機(jī)與錄音俗冻,去河邊找鬼。 笑死牍颈,一個(gè)胖子當(dāng)著我的面吹牛迄薄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播煮岁,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼讥蔽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼涣易!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起冶伞,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤新症,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后响禽,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體徒爹,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年芋类,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了隆嗅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡侯繁,死狀恐怖胖喳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贮竟,我是刑警寧澤丽焊,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站咕别,受9級(jí)特大地震影響技健,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜顷级,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一凫乖、第九天 我趴在偏房一處隱蔽的房頂上張望确垫。 院中可真熱鬧弓颈,春花似錦、人聲如沸删掀。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)披泪。三九已至纤子,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間款票,已是汗流浹背控硼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留艾少,地道東北人卡乾。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像缚够,于是被迫代替她去往敵國(guó)和親幔妨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鹦赎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1、xcode中如何用快捷鍵注釋一個(gè)程序塊 注釋:選中程序塊,然后command+/, 這可以以每行前面加//的...
    harrytc閱讀 638評(píng)論 0 0
  • 上篇文章中對(duì)導(dǎo)航器區(qū)域的介紹只是單單介紹了符號(hào)導(dǎo)航器的使用技巧误堡,其中還有測(cè)試導(dǎo)航器古话,調(diào)試導(dǎo)航器和斷點(diǎn)導(dǎo)航器這三個(gè)比...
    小唐羽鋒閱讀 3,522評(píng)論 1 51
  • 【前言】常見(jiàn)的數(shù)據(jù)庫(kù)都有函數(shù),hive自身也有函數(shù)锁施。分為內(nèi)置函數(shù)和自定義的UDF函數(shù)陪踩,自定義函數(shù)例如(sum 、c...
    先生_呂閱讀 8,711評(píng)論 0 5
  • 自從成為素食主義者沾谜,我變得容易感動(dòng)膊毁,眼眶經(jīng)常濕濕的。 從前的我基跑,無(wú)悲無(wú)喜婚温,生命沒(méi)有輪廓,情感沒(méi)有起落媳否≌っ快樂(lè)時(shí)不覺(jué)快...
    肖小跑閱讀 578評(píng)論 0 0
  • 心的陪伴 郭相麟 在靈魂深處 需要心的陪伴 沒(méi)有責(zé)備 只有傾聽(tīng) 沒(méi)有要求 只有理解 心的...
    郭相麟閱讀 171評(píng)論 0 0