iOS Code Snippets 提升代码开发效率
描述:
我们有没有好奇过,我们写代码的时候输入几个字母系统就会提示一些相应的代码块。比如- (instancetype)initWithFrame:(CGRect)frame等。但是还有些我们常用的代码块系统是没有的。这个时候我们就需要自己自定义一些代码块了。
自定义代码块的方法:
1.首先在项目中写入自己想创建成为Code Snippets的代码块。如:
@property (nonatomic, assign) <#Type#> <#name#>;
2.选中代码块点击鼠标右键选中create Code snippet 选项。
3.进入编辑代码块的界面。
代码块界面
4.进行代码块命名,我一般都是用My做前缀,后面是名称,需要占位的代码可以用特殊格式写<#type#>。
5.最后点击Done完成。
补充说明一下下面的几个选项:
1.Language:选择开发语言。
2.Platform:可用于的平台iOS、macOS、tvOS、watchOS。
3.Completion:和代码块的名称要一样,否则引用的时候打不出来。
4.Availabililty:在哪些地方可以调用出代码块,比如有的代码块适用于.h文件,有的代码块适用于.m文件,他们的代码块名称很相似,为了引用的时候不都弹出来干扰选择,可以设置这个选项。规定其可用范围。
常用的自定义代码块:
属性构建:
@property (nonatomic, assign) <#Type#> <#name#>;
@property (nonatomic, copy) <#Type#> *<#name#>;
@property (nonatomic, strong) <#Type#> *<#name#>;
@property (nonatomic, weak) <#Type#> *<#name#>;
@property (nonatomic, copy) void (^<#name#>Block) (<#name#>);
强弱Self:
__weak __typeof(self) weakSelf = self;
__strong __typeof(self) strongSelf = weakSelf;
懒加载:
- (<#type#> *)<#name#> {
if (!_<#property#>) {
}
return _<#property#>;
}
单例:
static <#ClassSingle#> *_sharedSingleton = nil;
static dispatch_once_t _onceToken;
+ (instancetype)shareSingleton {
dispatch_once(&onceToken, ^{
if (_sharedSingleton == nil) {
_sharedSingleton = [[super allocWithZone:NULL] init];
}
});
return _sharedSingleton;
}
+ (instancetype)allocWithZone:(struct _NSZone *)zone {
return [<#ClassSingle#> shareSingleton];
}
- (id)copyWithZone:(nullable NSZone *)zone {
return [<#ClassSingle#> shareSingleton];
}
- (id)mutableCopyWithZone:(nullable NSZone *)zone {
return [<#ClassSingle#> shareSingleton];
}
- (void)destorySingle {
_onceToken = 0;
_sharedSingleton = nil;
}
还有一些关于UI快速创建的,快速创建UILabel,UIButton,UITableView,UICollectionView等,一些快速构建约束的,就不一一列举了。
问题:
这时候的的人可能会问,我也想搞一套这个东西,但是我一个一个的往上粘也太麻烦了,有没有直接把写好的一套的代码块直接挪到项目中去呢?
这个还真有。首先,我们要知道存放代码块的文件在哪,找到这个文件,将现有的代码块文件,放进这个文件夹中就可以了。在桌面(shift + command + G)复制下面的路径回车。
文件路径:
~/Library/Developer/Xcode/UserData/CodeSnippets
存放代码块的地址:
https://github.com/WarmLGZ/CodeSnippetsFile
总结:
这个代码块确实能提升我们的代码效率,别人刚写个UILabel你的一块代码都写完了,就是这么省事。还有一次我Xcode升级了以后,我之前自己定义的一些代码块就没有了。写这个文章也为了保存一份文件,以防万一。还有哪些不足和需要补充的地方望大家补充指教,必虚心学习。