Xcode為我們提供了一種可以快速輸入一段代碼的快捷方式井佑,這里對如何通過自定義快捷代碼片段來提升開發(fā)效率進(jìn)行一個總結(jié)
如何創(chuàng)建自定義代碼片段
在Xcode的右下角有一個代碼片段區(qū)域,如圖所示:
這里面已經(jīng)有了很多代碼片段需频,這些代碼片段是Xcode為我們提前準(zhǔn)備的。
我們先來看一看里面的結(jié)構(gòu)憔古,點開第一個代碼片段
C Block typedef - Define a block as a type
罢坝,這個代碼片段是我們通常用來給一個block聲明一個別名的如圖所示的代碼片段有很多很多,感興趣的可以自己去看一看搭独,接下來就是本文的重點婴削,如何創(chuàng)建屬于我們的代碼片段呢?
- 在編輯區(qū)寫上你要添加的片段代碼
-
將代碼選中拖拽到Code Snippets區(qū)域
- 在彈框里對代碼片段進(jìn)行編輯牙肝,將想要方便更換的內(nèi)容以
<# #>
包裹唉俗,對應(yīng)的內(nèi)容就是可變內(nèi)容啦
- 在
Completion Shortcut
一欄中可以填入快捷標(biāo)記 -
完成以上步驟后,我們在需要使用相關(guān)代碼片段時只需要輸入快捷標(biāo)記就能選中啦
常用代碼片段
騰訊QMUI Team開源了一個他們經(jīng)常使用的代碼片段配椭,非常好用虫溜,大家可以直接去下載,存放在~/Library/Developer/Xcode/UserData/CodeSnippets
目錄下
快捷鍵匯總
NSObject
-
pa
- 定義一個assign
的 property -
pc
- 定義一個copy
的 property -
ps
- 定義一個strong
的property -
psr
- 定義一個strong, readonly
的property -
pw
- 定義一個weak
的property -
propertySwizzleAssign
- 用swizzle
的方式定義一個assign
的property -
propertySwizzleCopy
- 用swizzle
的方式定義一個copy
的property -
propertySwizzleStrong
- 用swizzle
的方式定義一個strong
的property -
propertySwizzleWeak
- 用swizzle
的方式定義一個weak
的property -
sharedInstance
- 為當(dāng)前類創(chuàng)建一個實現(xiàn)單例功能的sharedInstance
方法 -
replaceMethod
- 重寫當(dāng)前類的load
方法并在其中用swizzle
替換方法實現(xiàn) -
replaceMethod_QMUI
- QMUI 重寫當(dāng)前類的load
方法并用ReplaceMethod()
函數(shù)替換方法的實現(xiàn)
Block
-
blockArguments
- 聲明一個用于方法參數(shù)的 block -
blockproperty
- 聲明一個用于 property 的 block -
blocktypedef
- 用typedef
定義一個 block -
blockvar
- 定義一個作為局部變量的 block
Method & Function
-
fnv
- 定義一個返回值為void
的方法 -
fnv:
- 定義一個返回值為void
且?guī)?shù)的方法 -
fnblock
- 定義一個返回值類型為 block 的方法 -
fnv_handleEvent
- 定義一個用于UIControl
事件回調(diào)的方法 -
fnv_longPress
- 定義一個用于UILongPressGestureRecognizer
的回調(diào)方法(你就不用每次都去拼寫那個很長的手勢名字了) -
fnv_pan
- 定義一個用于UIPanGestureRecognizer
的回調(diào)方法 -
fnv_tap
- 定義一個用于UITapGestureRecognizer
的回調(diào)方法
UIView
-
setFrame
- 為UIView
設(shè)置frame
-
setFrame_QMUI
- QMUI 使用像素對齊的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
- 展開常用的幾個UITableViewDelegate
方法 -
numberOfSectionsInTableView
- 展開numberOfSectionsInTableView:
方法 -
numberOfRowsInSection
- 展開tableView:numberOfRowsInSection:
方法 -
cellForRowAtIndexPath
- 展開tableView:cellForRowAtIndexPath:
方法 -
heightForRowAtIndexPath
- 展開tableView:heightForRowAtIndexPath:
方法 -
didSelectRowAtIndexPath
- 展開tableView:didSelectRowAtIndexPath:
方法
UICollectionView
-
collectionViewDelegate
- 展開常用的幾個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)建一個用于navigationItem.leftBarButtonItem
的UIBarButtonItem
-
rightBarButtonItemImage
- QMUI 用QMUINavigationButton
的方法創(chuàng)建一個用于navigationItem.rightBarButtonItem
的UIBarButtonItem
Other
-
pragma
- 展開一個用于 Xcode 導(dǎo)航的#pragma mark -
宏 -
externRefInH
- 在*.h
文件里聲明一個extern const
的指針 -
externRefInM
- 在*.m
文件里為一個extern const
的指針賦值 -
externValueInH
- 在*.h
文件里聲明一個extern const
的值變量 -
externValueInM
- 在*.m
文件里為一個extern const
的變量賦值 -
static reference
- 定義一個static
的指針 -
static
- 定義一個static
的值變量 -
__weakSelf
- 定義一個weak
的self
指針 -
__strongSelf
- 將weakSelf
指針改為strong
的self
指針 -
logCallStackSymbols
- 用NSLog
打出當(dāng)前的方法調(diào)用棧信息 -
timeConsuming
- 展開一段用CACurrentMediaTime()
來計算方法耗時的代碼