通过code snippets,我们可以创建一些可重用的代码块,并且在任何需要的地方很容易的就可以使用这些代码块。

NSHipster - code snippets中有不少code sinppets。
另外,我们可能常常需要转移或者同步到别的电脑上,那么我们就需要知道这些Code Snippets存放的位置:
~/Library/Developer/Xcode/UserData/CodeSnippets
知道这些文件在哪,其他就好办了。
接下来记录项目当中常用的一些code snippets:
__strong self
- Title:
__strong self - Summary:
Declare strong reference to weak reference - Completion Shorcut:
_strong self - Completion Scopes:
Function or Method
__strong __typeof(<#weakSelf#>)strongSelf = <#weakSelf#>;
__weak self
- Title:
__weak self - Summary:
Declare weak reference to strong referencee - Completion Shorcut:
__weak self - Completion Scopes:
Function or Method
__weak __typeof(self) <#weakSelf#> = self;
Annotation
- Title:
Annotation Pandect - Summary:
注释 - Completion Shorcut:
annotation - Completion Scopes:
All
/**
* <#annotation#>
*/
Warning
- Title:
Warning - Summary:
警告 - Completion Shorcut:
warn - Completion Scopes:
All
#warning mark - <#warning#>
Assign
- Title:
Assign Property - Summary:
declare assign property - Completion Shorcut:
@property assign - Completion Scopes:
Class Interface Methods
@property (nonatomic, assign) <#Object#> <#obj#>;
Readonly
- Title:
Readonly Property - Summary:
declare readonly property - Completion Shorcut:
@property readonly - Completion Scopes:
Class Interface Methods
@property (nonatomic, readonly) <#Object#> *<#obj#>;
Strong
- Title:
Strong Property - Summary:
declare strong property - Completion Shorcut:
@property strong - Completion Scopes:
Class Interface Methods
@property (nonatomic, strong) <#Object#> *<#obj#>;
Weak
- Title:
Weak Property - Summary:
declare weak property - Completion Shorcut:
@property weak - Completion Scopes:`Class Interface Methods
@property (nonatomic, weak) <#id#> <#obj#>;
Class Continuation
- Title:
Class Continuation - Summary:
Anonymous category to define private methods in an implementation - Completion Shorcut:
class continuation - Completion Scopes:
Top Level
@interface <#Class Name#> ()
<#Continuation#>
@end
dispatch_async
- Title:
dispatch_async Pattern for Background Processing - Summary:
Dispatch to do work in the background, and then to the main queue with the results - Completion Shorcut:
dispatch_async - Completion Scopes:
Function or Method
dispatch_async(dispatch_get_global_queue(<#dispatch_queue_priority_t priority#>, <#unsigned long flags#>), ^(void) {
<#code#>
dispatch_async(dispatch_get_main_queue(), ^(void) {
<#code#>
});
});
Documents Directory Path
- Title:
Documents Directory Path - Summary:
文件主路径 - Completion Shorcut:
documents directory - Completion Scopes:
Function or Method
NSURL *documentsDirectoryURL = [NSURL fileURLWithPath:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]];
ImageView
- Title:
ImageView - Summary:
Create & Initialize UIImageView with Named Image - Completion Shorcut:
imageNamed - Completion Scopes:
Code Expression
[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"<#image name#>"]]
init
- Title:
init - Summary:
Designated incantation for your designated initializers - Completion Shorcut:
init self - Completion Scopes:
Function or Method
self = [super init];
if (!self) {
return nil;
}
<#initializations#>
return self;
NSCoding Protocol Methods
- Title:
NSCoding Protocol Methods - Summary:
Placeholders for NSCoding protocol methods - Completion Shorcut:
nscoding protocol - Completion Scopes:
Class Implementation
#pragma mark - NSCoding
- (instancetype)initWithCoder:(NSCoder *)decoder {
self = [super init];
if (!self) {
return nil;
}
<# implementation #>
return self;
}
- (void)encodeWithCoder:(NSCoder *)coder {
<# implementation #>
}
NSLocalizedString
- Title:
NSLocalizedString - Summary:
本地化 - Completion Shorcut:
local string - Completion Scopes:
Code Expression
NSLocalizedString(@"<#Message#>", <#Comment#>)
Pragma Mark
- Title:
Pragma Mark - Summary:
标记 - Completion Shorcut:
mark - Completion Scopes:
Class Interface Methods、Class Implementation、Top Level
#pragma mark - <#mark#>
Remove Notification Observer
- Title:
Remove Notification Observer - Summary:
移除notification的观察者 - Completion Shorcut:
remove observer - Completion Scopes:
Function or Method
[[NSNotificationCenter defaultCenter] removeObserver:self];
Set Frame
- Title:
Set Frame - Summary:
Initializes a view frame inside a code block - Completion Shorcut:
set view frame - Completion Scopes:
Function or Method
<# view #>.frame = ({
CGRect frame = <# view #>.frame;
<# ... #>
frame;
});
Shared Singleton
- Title:
Shared Singleton - Summary:
Class method that returns a singleton instance - Completion Shorcut:
shared singleton - Completion Scopes:
Class Implementation
+ (instancetype)shared<#name#> {
static <#class#> *_shared<#name#> = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_shared<#name#> = <#initializer#>;
});
return _shared<#name#>;
}
Specta Test Case
- Title:
Specta Test Case - Summary:
declare a speca test case - Completion Shorcut:
test case - Completion Scopes:
Top level
describe(<#NSString *name#>, ^{
<#code#>
context(<#NSString *name#>, ^{
beforeEach(^{
<#code#>
});
it(<#NSString *name#>, ^{
<#code#>
});
});
});
String Format
- Title:
String Format - Completion Shorcut:
string format - Completion Scopes:
Function or Method
[NSString stringWithFormat:<#(nonnull NSString *), ...#>]
UIPickerViewDataSource
- Title:
UIPickerViewDataSource - Summary:
Placeholders for required UIPickerView datasource methods - Completion Shorcut:
picker view datasource - Completion Scopes:
Class Implementation
#pragma mark - UIPickerDataSource
- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
return <#number#>
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return <#number#>
}
UIPickerViewDelegate
- Title:
UIPickerViewDelegate - Summary:
Placeholders for required UIPickerView Delegate methods - Completion Shorcut:
picker view delegate - Completion Scopes:
Class Implementation
#pragma mark - UIPickerViewDelegate
- (NSString *)pickerView:(UIPickerView *)pickerView
titleForRow:(NSInteger)row
forComponent:(NSInteger)component
{
<#code#>
}
- (void)pickerView:(UIPickerView *)pickerView
didSelectRow:(NSInteger)row
inComponent:(NSInteger)component
{
<#code#>
}
UITableViewDataSource
- Title:
UITableViewDataSource - Summary:
Placeholders for required UITableViewDataSource delegate methods - Completion Shorcut:
table view datasource - Completion Scopes:
Class Implementation
#pragma mark - UITableViewDataSource
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return <#number#>;
}
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section
{
return <#number#>;
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:<#reuseIdentifier#> forIndexPath:<#indexPath#>];
[self configureCell:cell forRowAtIndexPath:indexPath];
return cell;
}
- (void)configureCell:(UITableViewCell *)cell
forRowAtIndexPath:(NSIndexPath *)indexPath
{
<#statements#>
}
UITableViewDelegate
- Title:
UITableViewDelegate - Summary:
Placeholders for required UITableViewDelegate protocol methods - Completion Shorcut:
table view didselect - Completion Scopes:
Class Implementation
#pragma mark - UITableViewDelegate
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
<#statements#>
}