代码块
简述
日常敲代码肯定会遇到要敲大量的重复性而又无法省略和封装的代码,比如系统的if-else语句,又比如回到主线程的代码dispatch_async(dispatch_get_main_queue(), ^{ });
为了加快我们的编程速度,实际上Xcode已经给我们提供一种比较好的方式,即——代码块。
实际上Xcode本身也给我们预置了很多的代码块,比如我们常常用到的if-else:
image-20190809191830648.png
当你键入if的时候编辑器就会联想对应的代码块:
if (<#condition#>) {
<#statements#>
} else {
<#statements#>
}
有了这些代码块,极大的提高了我们coding的速度。
当然系统预置的这些代码块在我们的编程过程可能远远不够的,如果想更方便自己,Xcode也是提供给我们自定义的代码块。
比如,main的代码块定义
dispatch_async(dispatch_get_main_queue(), ^{
<#code#>
});
操作方式:
选中自定义的代码
>>>>右键
点击Create Code Snippet
就会显示下面的编辑框
编辑完成,就如下面:
image-20190809193823964.png
Title:标题。
Summary:描述文字。
Platform:可以使用的平台(如iOS)。
Language:可以在哪些语言中使用(如 Objective-C)。
Completion Shortcut:快捷方式,以字母开头(支持少数符号,如@)。Completion Scopes:作用范围,一般写在正确的位置拖动即可,Xcode会自行选择好。
下面是我常用的一些代码块:
image-20190809181734340.png
s
后面我会把这些代码块给导出来,有需要的可以使用,压缩包在最后有说明;
说一下他的好处:
好处1:
提高代码速度,不如下面这些,每次键入代码量很长,太累
// after
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(<#delayInSeconds#> * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
<#code to be executed after a specified delay#>
});
// main
dispatch_async(dispatch_get_main_queue(), ^{
<#code#>
});
// singleton
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
<#code to be executed once#>
});
// interface
@interface <#Class#>()
@end
// weak
__weak typeof(self) weakSelf = self;
好处2:
固定自己的编写规范:例如,一般属性的定义
@property (nonatomic, copy) <#block#>;
@property (nonatomic, weak) id<<#protocol#>> delegate;
@property (nonatomic, copy) NSString *<#string#>;
@property (nonatomic, strong) <#Class#> *<#object#>;
@property (nonatomic, weak) <#Class#> *<#object#>;
@property (nonatomic, assign) <#Class#> <#property#>;
好处3:
自定义自己的规则:例如你想把你的一个类的代码格式显示,你就可以像下面这样定义,每一个方法放在对应的模块,也利于自己寻找。下面是自定义view的代码块:
#pragma mark - Public
#pragma mark - Private
#pragma mark - Actiocn
#pragma mark - dealloc
#pragma mark - init
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];if (__builtin_available(<#{i, mac, tv, watch}#>OS <#x.y.z#>, *)) {
<#API available statements#>
} else {
<#fallback statements#>
}
if (self) {
[self setup];
}
return self;
}
- (instancetype)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
[self setup];
}
return self;
}
#pragma mark - UI
- (void)setup
{
}
Xcode中的代码块默认存储在~/Library/Developer/Xcode/UserData/CodeSnippets
提取码:rwt9
可以将附件内容直接放入目录下,同步别人的。
注意:先试试,因为适合自己的才是最好的,不好用的删掉就好了