Code Snippets
通过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#>
}