CodeSnippet
CodeSnippet 是代码片段的意思。
在Xcode中支撑代码片段,咱们能够将经常运用的代码存储为一个代码片段,并为它设置快捷键。这样,输入快捷键的时分就能将代码输入
CodeSnippet创立和运用
比方我将 @property (nonatomic, copy) NSString *name;
存储为代码片段
- 选中代码,右键,Create Code Snippet就行 可认为它设置快捷键、简略描绘、言语、作用域等
2. 修正代码片段的属性
Command + Shift + L 或许 点击Xcode右上角的+号
点击Edit就能够从头编辑属性。也能够点击左边delete删去这个代码片段 3. 运用快捷键,也便是上图中的 Completion后边的mynpc。输入mynpc后回车,就能够直接键入
4. 给代码片段内的部分变量增加占位符
只需求即将修正的部分运用 <#name#>
包裹起来就行,其间name是你自己命名的变量。
用于在键入代码片段后作为占位
@property (nonatomic, copy) <#type#> *<#name#>;
这样修正之后,你就有了方法参数占位的体验了
代码片段存储方位
Xcode已经自带了许多代码片段,包括C、OC、C++、Swift、XML等
- 代码片段存储在
~/Library/Developer/Xcode/UserData/CodeSnippets
目录中,文件名是.codesnippet
- 咱们能够将已有的代码片段复制到这个目录下,假如不存在这个目录,创立一份就行
现在Github上也有许多现成的CodeSnippet
- github.com/QMUI/QMUI_i…
- github.com/burczyk/Xco…
Xcode Template
模板是包括在扩展名为.xctemplate的目录中的文件的集合
Xcode在创立项目或文件时,运用了Xcode中的的模板功用,它包括iOS
、macOS
、watchOS
、tvOS
、visionOS
、DriverKit
等菜单
Xcode 内置的模板存放在两个首要的地方
- 根底模板
/Applications/Xcode-15.0.0-Beta.6.app/Contents/Developer/Library/Xcode/Templates
- 分平台存储的模板
/Applications/Xcode-15.0.0-Beta.6.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates
- 文件夹里面有文件模板
File Templates
和工程模板Project Templates
,别离对应创立文件时的选项和创立工程时的选项。
一般情况下,不会频繁创立项目,而会频繁创立文件。所以咱们本次学习创立文件模板
提示:这里由于我运用的Xcode 15 beta6,所以可能和你的途径不一样
模板目录中直接包括.xctemplate的文件夹对应的是面板上的Section
而Section下的内容是由上面两个模板途径的内容以及用户自定义模板途径的内容决定的
上面分平台的 User Interface只包括除了SwiftUI View.xctemplate
之外的其他四个,SwiftUI View.xctemplate
则是由根底模板供给
模板常识
当我创立文件时,挑选言语为Objective-C,基类为 NSObject,体系就会运用下面的模板
一个模板的内容首要包括TemplateInfo.plist
、模板Icon、模板文件等
-
TemplateInfo.plist
首要描绘模板的信息 - 模板文件命名首要由
基类+言语
(比方下图的NSObjectObjective-C
) 组成 - 模板文件内部会运用宏来替换掉 输入的文件名 等信息
-
TemplateIcon.img
是一个48×48的图片,TemplateIcon@2x.png
是一个96*96的图片。用于模板的icon展示
下图中 前后三下划线 的便是宏 ___FILEHEADER___
看一眼生成的文件,比对一下大约就知道是哪个宏对应什么内容
TemplateInfo.plist 描绘模板信息
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 模板所支撑的平台有哪些
支撑的类型有以下方面
- com.apple.platform.macosx
- com.apple.platform.iphoneos
- com.apple.platform.watchos
- com.apple.platform.appletvos
- com.apple.platform.xros
Options 模板选项装备
是一个集合,装备创立模板的面板相关属性,如称号,类型,选项卡,选项束缚等。模板中的宏会被此处的装备值替换
Options 中有四个装备选项,通过 Name 等描绘字段可知别离是“类名”、“基类名”、“是否创立XIB”、“言语选取”
常见字段
Identifier 唯一标识
模板选项的唯一标识,在模板文件中能够通过宏来引证它的值 ___VARIABLE_identifier___
,用来保存模板选项的值
Required 该选项是否必须输入或挑选
Name 选项名字,会显示在xcode界面上
Description 选项阐明,鼠标悬浮在选项方位时会显示
Type 选项类型
- ViewController中类型为
text
(手动输入) - 基类为
class
(类选取) - 创立XIB为
checkbox
(勾选框) - 言语选取为
popup
(弹框) static
combo
buildSetting
NotePersisted 输入值是否保留以便下次运用
FallbackHeader 假如无法确定要子类化的类的方位时导入的头文件
Suffixes 一个后缀字典,根据你要子类化的类型增加
Default 选项默许值
这个值跟选项类型(text
、class
、checkbox
、popup
)有关。例如
- 创立XIB的选项类型为
checkbox
,默许不创立,其值就为false - 言语挑选的选项类型为
popup
,是必选的,其默许值就为Objective-C
Values 某类值的集合,假如类型是combo, popup, classs时,需求供给的值数组
这个值跟当时选项具体内容有关,最直观的便是言语选项中的Values,它对应的值是用户能够挑选的两种开发言语Objective-C
与Swift
需求分组的类型
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一份修修正改
创立自定义模板步骤
- 从
/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
复制一份模板 - 将模板复制到
~/Library/Developer/Xcode/File Templates
并创立自己的目录。有两种方法
-
和原有Source在同一个Section。
~/Library/Developer/Xcode/Templates/File Templates/继承修正/iOS/Source/我的CocoaTouchClass.xctemplate
-
独自一个Section
~/Library/Developer/Xcode/Templates/File Templates/我的模板/我的CocoaTouchClass.xctemplate
1分钟提效
能够直接将我的库房clone下来,执行install.swift之后,重启Xcode,瞬间提速
github.com/Hardercoder…
材料
- blog.devlxx.com/2020/06/29/…
- shujucn.gitbooks.io/xcode/conte…
- /post/695682…
- /post/688267…
- www.jianshu.com/p/1ce9a0822…
- www.jianshu.com/p/2538fb02d…
- www.kodeco.com/26582967-xc…
- www.andyibanez.com/posts/xcode…
- medium.com/mindful-eng…
- diamantidis.github.io/2019/07/21/…
- /post/691674…
- /post/684490…
官方材料
- help.apple.com/xcode/mac/1…