Xcode為我們提供了一種可以快速輸入一段代碼的快捷方式,這里對(duì)如何通過自定義快捷代碼片段來提升開發(fā)效率進(jìn)行一個(gè)總結(jié)
如何創(chuàng)建自定義代碼片段
在Xcode的右下角有一個(gè)代碼片段區(qū)域,如圖所示:

QQ20171102-163351.png
這里面已經(jīng)有了很多代碼片段,這些代碼片段是Xcode為我們提前準(zhǔn)備的。
我們先來看一看里面的結(jié)構(gòu),點(diǎn)開第一個(gè)代碼片段
C Block typedef - Define a block as a type,這個(gè)代碼片段是我們通常用來給一個(gè)block聲明一個(gè)別名的
QQ20171102-163706.png
如圖所示的代碼片段有很多很多,感興趣的可以自己去看一看,接下來就是本文的重點(diǎn),如何創(chuàng)建屬于我們的代碼片段呢?
- 在編輯區(qū)寫上你要添加的片段代碼
-
將代碼選中拖拽到Code Snippets區(qū)域
QQ20171102-165121.png - 在彈框里對(duì)代碼片段進(jìn)行編輯,將想要方便更換的內(nèi)容以
<# #>包裹,對(duì)應(yīng)的內(nèi)容就是可變內(nèi)容啦
QQ20171102-170317.png - 在
Completion Shortcut一欄中可以填入快捷標(biāo)記 -
完成以上步驟后,我們在需要使用相關(guān)代碼片段時(shí)只需要輸入快捷標(biāo)記就能選中啦
QQ20171102-170644.png
常用代碼片段
騰訊QMUI Team開源了一個(gè)他們經(jīng)常使用的代碼片段,非常好用,大家可以直接去下載,存放在~/Library/Developer/Xcode/UserData/CodeSnippets目錄下
快捷鍵匯總
NSObject
-
pa- 定義一個(gè)assign的 property -
pc- 定義一個(gè)copy的 property -
ps- 定義一個(gè)strong的property -
psr- 定義一個(gè)strong, readonly的property -
pw- 定義一個(gè)weak的property -
propertySwizzleAssign- 用swizzle的方式定義一個(gè)assign的property -
propertySwizzleCopy- 用swizzle的方式定義一個(gè)copy的property -
propertySwizzleStrong- 用swizzle的方式定義一個(gè)strong的property -
propertySwizzleWeak- 用swizzle的方式定義一個(gè)weak的property -
sharedInstance- 為當(dāng)前類創(chuàng)建一個(gè)實(shí)現(xiàn)單例功能的sharedInstance方法 -
replaceMethod- 重寫當(dāng)前類的load方法并在其中用swizzle替換方法實(shí)現(xiàn) -
replaceMethod_QMUI- QMUI 重寫當(dāng)前類的load方法并用ReplaceMethod()函數(shù)替換方法的實(shí)現(xiàn)
Block
-
blockArguments- 聲明一個(gè)用于方法參數(shù)的 block -
blockproperty- 聲明一個(gè)用于 property 的 block -
blocktypedef- 用typedef定義一個(gè) block -
blockvar- 定義一個(gè)作為局部變量的 block
Method & Function
-
fnv- 定義一個(gè)返回值為void的方法 -
fnv:- 定義一個(gè)返回值為void且?guī)?shù)的方法 -
fnblock- 定義一個(gè)返回值類型為 block 的方法 -
fnv_handleEvent- 定義一個(gè)用于UIControl事件回調(diào)的方法 -
fnv_longPress- 定義一個(gè)用于UILongPressGestureRecognizer的回調(diào)方法(你就不用每次都去拼寫那個(gè)很長的手勢名字了) -
fnv_pan- 定義一個(gè)用于UIPanGestureRecognizer的回調(diào)方法 -
fnv_tap- 定義一個(gè)用于UITapGestureRecognizer的回調(diào)方法
UIView
-
setFrame- 為UIView設(shè)置frame -
setFrame_QMUI- QMUI 使用像素對(duì)齊的CGRectFlatMake()為UIView設(shè)置frame -
setFrameX- QMUI 使用CGRectSetX()修改UIView的frame.origin.x -
setFrameY- QMUI 使用CGRectSetY()修改UIView的frame.origin.y -
setFrameXY- QMUI 使用CGRectSetXY()修改UIView的frame.origin -
sizeThatFits- 為當(dāng)前 view 創(chuàng)建sizeThatFits:方法 -
layoutSubviews- 展開layoutSubviews方法 -
updateConstraints- 展開updateConstraints方法 -
getWidth- 展開CGRectGetWidth() -
getHeight- 展開CGRectGetHeight() -
getMinX- 展開CGRectGetMinX() -
getMinY- 展開CGRectGetMinY() -
addtarget- 調(diào)用UIControl addTarget:action:forEvents:方法 -
setImageForButton- 為UIButton設(shè)置圖片 -
setTitleColorForButton- 為UIButton設(shè)置文字顏色 -
setTitleForButton- 為UIButton設(shè)置文字
UITableView
-
initWithStyle- 展開initWithStyle:方法 -
initWithStyleForCell- 展開UITableViewCell initWithStyle:reuseIdentifier:方法 -
tableViewDelegate- 展開常用的幾個(gè)UITableViewDelegate方法 -
numberOfSectionsInTableView- 展開numberOfSectionsInTableView:方法 -
numberOfRowsInSection- 展開tableView:numberOfRowsInSection:方法 -
cellForRowAtIndexPath- 展開tableView:cellForRowAtIndexPath:方法 -
heightForRowAtIndexPath- 展開tableView:heightForRowAtIndexPath:方法 -
didSelectRowAtIndexPath- 展開tableView:didSelectRowAtIndexPath:方法
UICollectionView
-
collectionViewDelegate- 展開常用的幾個(gè)UICollectionViewDelegate方法 -
numberOfSectionsInCollectionView- 展開numberOfSectionsInCollectionView: -
numberOfItemsInSection- 展開collectionView:numberOfItemsInSection: -
cellForItemAtIndexPath- 展開collectionView:cellForItemAtIndexPath: -
sizeForItemAtIndexPath- 展開collectionView:layout:sizeForItemAtIndexPath:方法 -
didSelectItemAtIndexPath- 展開collectionView:didSelectItemAtIndexPath:方法 -
didDeselectItemAtIndexPath- 展開collectionView:didDeselectItemAtIndexPath:方法
UIViewController
-
loadView- 展開loadView方法 -
viewDidLoad- 展開viewDidLoad方法 -
viewWillAppear- 展開viewWillAppear:方法 -
viewDidAppear- 展開viewDidAppear:方法 -
viewWillDisappear- 展開viewWillDisappear:方法 -
viewDidDisappear- 展開viewDidDisappear:方法 -
viewDidLayoutSubviews- 展開viewDidLayoutSubviews:方法 -
updateViewConstraints- 展開updateViewConstraints:方法 -
addChildViewController- 在當(dāng)前UIViewController里添加childViewController -
removeFromParentViewController- 將childViewController從當(dāng)前的UIViewController里移除 -
initSubviews- QMUI 展開initSubviews方法 -
setNavigationItems- QMUI 重寫QMUICommonViewController里的setNavigationItemsIsInEditMode:animated:方法 -
setToolbarItems- QMUI 重寫QMUICommonViewController里的setToolbarItemsIsInEditMode:animated:方法 -
leftBarButtonItemImage- QMUI 用QMUINavigationButton的方法創(chuàng)建一個(gè)用于navigationItem.leftBarButtonItem的UIBarButtonItem -
rightBarButtonItemImage- QMUI 用QMUINavigationButton的方法創(chuàng)建一個(gè)用于navigationItem.rightBarButtonItem的UIBarButtonItem
Other
-
pragma- 展開一個(gè)用于 Xcode 導(dǎo)航的#pragma mark -宏 -
externRefInH- 在*.h文件里聲明一個(gè)extern const的指針 -
externRefInM- 在*.m文件里為一個(gè)extern const的指針賦值 -
externValueInH- 在*.h文件里聲明一個(gè)extern const的值變量 -
externValueInM- 在*.m文件里為一個(gè)extern const的變量賦值 -
static reference- 定義一個(gè)static的指針 -
static- 定義一個(gè)static的值變量 -
__weakSelf- 定義一個(gè)weak的self指針 -
__strongSelf- 將weakSelf指針改為strong的self指針 -
logCallStackSymbols- 用NSLog打出當(dāng)前的方法調(diào)用棧信息 -
timeConsuming- 展開一段用CACurrentMediaTime()來計(jì)算方法耗時(shí)的代碼


