CodeSnippet

CodeSnippet 是代码片段的意思。

在Xcode中支撑代码片段,咱们能够将经常运用的代码存储为一个代码片段,并为它设置快捷键。这样,输入快捷键的时分就能将代码输入

CodeSnippet创立和运用

比方我将 @property (nonatomic, copy) NSString *name; 存储为代码片段

  1. 选中代码,右键,Create Code Snippet就行
    利用Xcode Template 和 Code Snippet 提升开发效率
    可认为它设置快捷键、简略描绘、言语、作用域等

利用Xcode Template 和 Code Snippet 提升开发效率
2. 修正代码片段的属性

Command + Shift + L 或许 点击Xcode右上角的+号

利用Xcode Template 和 Code Snippet 提升开发效率

点击Edit就能够从头编辑属性。也能够点击左边delete删去这个代码片段

利用Xcode Template 和 Code Snippet 提升开发效率
3. 运用快捷键,也便是上图中的 Completion后边的mynpc。输入mynpc后回车,就能够直接键入

利用Xcode Template 和 Code Snippet 提升开发效率
4. 给代码片段内的部分变量增加占位符

只需求即将修正的部分运用 <#name#>包裹起来就行,其间name是你自己命名的变量。 用于在键入代码片段后作为占位

@property (nonatomic, copy) <#type#> *<#name#>;

利用Xcode Template 和 Code Snippet 提升开发效率
这样修正之后,你就有了方法参数占位的体验了

利用Xcode Template 和 Code Snippet 提升开发效率

代码片段存储方位

Xcode已经自带了许多代码片段,包括C、OC、C++、Swift、XML等

利用Xcode Template 和 Code Snippet 提升开发效率

  1. 代码片段存储在 ~/Library/Developer/Xcode/UserData/CodeSnippets 目录中,文件名是 .codesnippet
  2. 咱们能够将已有的代码片段复制到这个目录下,假如不存在这个目录,创立一份就行

现在Github上也有许多现成的CodeSnippet

  1. github.com/QMUI/QMUI_i…
  2. github.com/burczyk/Xco…

Xcode Template

模板是包括在扩展名为.xctemplate的目录中的文件的集合

Xcode在创立项目或文件时,运用了Xcode中的的模板功用,它包括iOSmacOSwatchOStvOSvisionOSDriverKit等菜单

利用Xcode Template 和 Code Snippet 提升开发效率
Xcode 内置的模板存放在两个首要的地方

  1. 根底模板 /Applications/Xcode-15.0.0-Beta.6.app/Contents/Developer/Library/Xcode/Templates
  2. 分平台存储的模板/Applications/Xcode-15.0.0-Beta.6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates
  3. 文件夹里面有文件模板File Templates和工程模板Project Templates,别离对应创立文件时的选项和创立工程时的选项。

一般情况下,不会频繁创立项目,而会频繁创立文件。所以咱们本次学习创立文件模板

提示:这里由于我运用的Xcode 15 beta6,所以可能和你的途径不一样

模板目录中直接包括.xctemplate的文件夹对应的是面板上的Section

利用Xcode Template 和 Code Snippet 提升开发效率

而Section下的内容是由上面两个模板途径的内容以及用户自定义模板途径的内容决定的

利用Xcode Template 和 Code Snippet 提升开发效率
上面分平台的 User Interface只包括除了SwiftUI View.xctemplate之外的其他四个,SwiftUI View.xctemplate则是由根底模板供给

利用Xcode Template 和 Code Snippet 提升开发效率

模板常识

利用Xcode Template 和 Code Snippet 提升开发效率
当我创立文件时,挑选言语为Objective-C,基类为 NSObject,体系就会运用下面的模板
利用Xcode Template 和 Code Snippet 提升开发效率

一个模板的内容首要包括TemplateInfo.plist、模板Icon、模板文件等

  1. TemplateInfo.plist 首要描绘模板的信息
  2. 模板文件命名首要由 基类+言语(比方下图的NSObjectObjective-C) 组成
  3. 模板文件内部会运用宏来替换掉 输入的文件名 等信息
  4. TemplateIcon.img是一个48×48的图片,TemplateIcon@2x.png是一个96*96的图片。用于模板的icon展示

下图中 前后三下划线 的便是宏 ___FILEHEADER___

利用Xcode Template 和 Code Snippet 提升开发效率

看一眼生成的文件,比对一下大约就知道是哪个宏对应什么内容

利用Xcode Template 和 Code Snippet 提升开发效率

TemplateInfo.plist 描绘模板信息

利用Xcode Template 和 Code Snippet 提升开发效率

AllowedTypes 答应包括的文件类型数组

  • public.objective-c-source (Objective-C)
  • public.objective-c-plus-plus-source (Objective C++)
  • public.c-source (C)
  • public.c-plus-plus.source (C++)
  • public.c-header (header file for C, C++, Objective C)
  • public.ruby-script (Ruby)
  • public.python-script (Python)
  • com.sun.java-class (Java .class file)
  • com.sun.java-source (Java .java file)
  • public.xml (XML)
  • public.source-code (generic source code)

MainTemplateFile 模板文件源文件

假如模板有多个文件,它用于指定模板完成后哪个文件被第一个翻开

SupportsSwiftPackage 是否支撑SwiftPackage

Kind 模板类型

文件固定的为:Xcode.IDEFoundation.TextSubstitutionFileTemplateKind

Description 详细描绘文字

Summary 简要描绘文字

SortOrder 排序优先级

DefaultCompletionName 默许文件名

假如创立时不输入称号,默许运用这个

Platforms 模板所支撑的平台有哪些

支撑的类型有以下方面

  1. com.apple.platform.macosx
  2. com.apple.platform.iphoneos
  3. com.apple.platform.watchos
  4. com.apple.platform.appletvos
  5. com.apple.platform.xros

Options 模板选项装备

是一个集合,装备创立模板的面板相关属性,如称号,类型,选项卡,选项束缚等。模板中的宏会被此处的装备值替换

利用Xcode Template 和 Code Snippet 提升开发效率
Options 中有四个装备选项,通过 Name 等描绘字段可知别离是“类名”、“基类名”、“是否创立XIB”、“言语选取”

常见字段

Identifier 唯一标识

模板选项的唯一标识,在模板文件中能够通过宏来引证它的值 ___VARIABLE_identifier___,用来保存模板选项的值

Required 该选项是否必须输入或挑选

Name 选项名字,会显示在xcode界面上

Description 选项阐明,鼠标悬浮在选项方位时会显示

Type 选项类型
  1. ViewController中类型为text(手动输入)
  2. 基类为class(类选取)
  3. 创立XIB为checkbox(勾选框)
  4. 言语选取为popup(弹框)
  5. static
  6. combo
  7. buildSetting
NotePersisted 输入值是否保留以便下次运用
FallbackHeader 假如无法确定要子类化的类的方位时导入的头文件
Suffixes 一个后缀字典,根据你要子类化的类型增加
Default 选项默许值

这个值跟选项类型(textclasscheckboxpopup)有关。例如

  1. 创立XIB的选项类型为checkbox,默许不创立,其值就为false
  2. 言语挑选的选项类型为popup,是必选的,其默许值就为Objective-C
Values 某类值的集合,假如类型是combo, popup, classs时,需求供给的值数组

这个值跟当时选项具体内容有关,最直观的便是言语选项中的Values,它对应的值是用户能够挑选的两种开发言语Objective-CSwift

需求分组的类型

popup、combo、class、checkbox这几种类型需求咱们为其创立子目录并增加对应的模板文件,Xcode将在.xctemplate文件中查找到输入元素供给的值的子目录。

其他类型
  • static
  • text

在源模板文件中运用Options定义的的标识符变量名来引证它的关联值,然后从用户界面获取输入并将其映射到模板源中 例如,假如模板定义了一个名为viewColor的标识符,那么您能够在源模板中运用___VARIABLE_viewColor______VARIABLE_viewColor:identifier___引证变量的值。

RequiredOptions 必要选项

从XIB选项中能够看出,这个字段是与checkbox 配合的,当基类呈现指定的值时,勾选框就可选

一些内置宏

  • ___PROJECTNAME___:工程名
  • ___FILENAME___:包括后缀的文件名
  • ___FILEBASENAME___:不包括后缀的文件名
  • ___FILEBASENAMEASIDENTIFIER___:不包括后缀的c格局文件名,会根据上下文被从头评价赋值。便是文件的称号
  • ___VARIABLE_cocoaTouchSubclass___:cocoaTouchSubclass 变量名
  • ___IMPORTHEADER_cocoaTouchSubclass___ 导入 cocoaTouchSubclass
  • ___FULLUSERNAME___:用户名
  • ___ORGANIZATIONNAME___:公司名
  • ___COPYRIGHT___:版权阐明
  • ___DATE___:当时日期,年/月/日
  • ___TIME___:当时时刻
  • ___YEAR___:当时年份
  • ___FILEHEADER___:文件头部的注释
  • productName是一个特殊的变量,Xcode运用它去命名文件

自定义模板

自定义模板的存储方位 ~/Library/Developer/Xcode/Templates/

最快捷的创立模板的方法便是从分平台的内置模板中copy一份修修正改

创立自定义模板步骤

  1. /Applications/Xcode-15.0.0-Beta.6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates/iOS/Source/Cocoa Touch Class.xctemplate 复制一份模板
  2. 将模板复制到~/Library/Developer/Xcode/File Templates并创立自己的目录。有两种方法
  • 和原有Source在同一个Section。

    ~/Library/Developer/Xcode/Templates/File Templates/继承修正/iOS/Source/我的CocoaTouchClass.xctemplate

利用Xcode Template 和 Code Snippet 提升开发效率

  • 独自一个Section

    ~/Library/Developer/Xcode/Templates/File Templates/我的模板/我的CocoaTouchClass.xctemplate

利用Xcode Template 和 Code Snippet 提升开发效率

1分钟提效

能够直接将我的库房clone下来,执行install.swift之后,重启Xcode,瞬间提速

github.com/Hardercoder…

材料

  1. blog.devlxx.com/2020/06/29/…
  2. shujucn.gitbooks.io/xcode/conte…
  3. /post/695682…
  4. /post/688267…
  5. www.jianshu.com/p/1ce9a0822…
  6. www.jianshu.com/p/2538fb02d…
  7. www.kodeco.com/26582967-xc…
  8. www.andyibanez.com/posts/xcode…
  9. medium.com/mindful-eng…
  10. diamantidis.github.io/2019/07/21/…
  11. /post/691674…
  12. /post/684490…

官方材料

  1. help.apple.com/xcode/mac/1…