1. 代码段
- 1.1 当我们在.h文件的#import "XXXXX.h"下面输入@protocol会出现如下提示框:
@protocol - Objective-C Protocol Definition
Define an Objective-C protocol.
这就是代码段的功能;
-
1.2 打开xCode右侧的视图,点击下面"{ }"按钮,切换到代码段浏览标签;在搜索框输入protocol,第一个就是刚才出现的那段代码,双击可以看到如下内容:
@protocol <#protocol name#>
<#methods#>
@end
<##>
作用是占位,## 之间可以输入提示文字;
由于是系统自带的代码段,所以我们不能修改;
- 1.3 接下来,我们来创建自己的代码段:
在项目中选中已经存在的代码,拖动到刚才代码段列表,弹出代码段编辑窗口;
Title
:表示代码段列表展现的名字;
Summary
:表示副标题,会出现在名字后面以"-"分开,还会出现在使用时的提示信息里面;
Platform
:支持的平台;
Language
:使用的语言;
Completion Shortcut
:快捷输入,貌似只能以字母开头(支持少数符号,如@);
Completion Scopes
:代码段作用范围;如果是在方法里面拖动创建的代码段默认是 "Function or Method"
,如果是在 @implementation
到 @end
之间拖动创建的代码段默认是 Class Implementation
;当然还有其它各种作用范围;
-
1.4 比如我们定义一个字符串属性:
@property (nonatomic, copy) NSString *name;
把这段代码拖到代码段列表;
Title
填 NSString
类型属性;
Summary
填快速添加 NSString
类型属性;
Completion Shortcut
填 @procopy
;
其它默认,这样我们就能直接输入 @procopy
回车来添加我们的代码了;
-
1.5 其它:
-
1.5.1 忘了
<##>
了,把NSString
改为<#NSString#>
,name
改为<#name#>
,这样我们就能使用Tab来定位到NSString
和name
上面,修改成其它类型和名字。 -
1.5.2 还有一点搞不懂,在.h文件的
@interface
和@end
之间可以实现,如果在.m文件中就不行,除非把作用范围改成All;如果有知道的,麻烦指点一下。 -
1.5.3如果不想要某个代码段,可以前往
/Users/[用户名]/Library/Developer/Xcode/UserData/CodeSnippets
删除对应的文件即可;因为名字是随机产生的,所以只能通过创建时间来判断了;同样,想备份的同学可以拷贝整个文件夹即可;当然,如果闲系统的这个功能不友好,可以选择第三方的工具Dash;
2. 文件模板
2.1 为什么我们新建一个继承UIViewController的类,会自带那么多信息?像项目名、用户名、时间 还有一部分代码;
进入到 /Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File Templates
目录,我们会看到在XCode新建文件时对应的标签;打开对应文件夹,会显示对应标签下所有模板文件和配置信息,这就是XCode自带的文件模板。
以我们最常用的UIViewController为例,继续进入 /Source/MyCocoa Class.xctemplate/NSObjectObjective-C
目录,里面只有两个文件:FILEBASENAME.h 和 FILEBASENAME.m ;打开这两个文件,你会看到一些占位信息,如下:
___FILENAME___
:文件名称包含后缀;
___PROJECTNAME___
:项目名称;
___FULLUSERNAME___
:当前电脑用户名;
___DATE___
:创建文件日期;
___COPYRIGHT___
:预定义信息;
___IMPORTHEADER_cocoaSubclass___
:引入文件父类;
___FILEBASENAMEASIDENTIFIER___
:还是文件名,不包含后缀;
___VARIABLE_cocoaSubclass___
:父类
返回上一级目录存放着模板配置文件TemplateInfo.plist :
Ancestors
:数组,继承的模板,支持多个;
Kind
:固定值,Xcode.IDEKit.TextSubstitutionFileTemplateKind 或 Xcode.IDEFoundation.TextSubstitutionFileTemplateKind ;
Concrete
:是否显示在工程窗口中;
Description
:模板描述;
Summary
:模板简介;
SortOrder
:模板排序的优先级,值越高越靠前;
Platforms
:数组,模板支持的平台;如果没有这个字段,则支持全部平台;
Options
:数组,重要!!!每个item代表一些配置信息;
其它:
TemplateIcon
:用于区别其它模板的icon,大小128 X 128;
正是由于存在以上文件,使得我们新建文件时,不会只出现一个空的文件;
2.2 这些信息我们能不能修改或者添加?
答案是肯定的;我们采用简单粗暴的方式,直接在系统模板的基础上修改;
- 进入
~/Library/Developer/Xcode/Templates/File Templates
,如果没有新建即可;这是自定义模板的路径,虽然我们可以在系统路径修改,但不建议这么做; - 创建一个文件夹,命名为自定义模板;当然也可以用系统的文件夹名称命名(如Sound),这样你自定义的模板就会出现在Sound标签下;
- 在新建的文件夹下面创建一个后缀为
.xctemplate
的文件夹MyViewController.xctemplate
,并复制系统目录下/Sound/Cocoa Class.xctemplate
里面的NSViewControllerObjective-C TemplateInfo.plist
到MyViewController.xctemplate
; - 打开T
emplateInfo.plist
,删除Platforms
键,展开Options
删除Item2
Item3
; 展开Item1
->Values
,增加一个ItemUIViewController
; - 修改
NSViewControllerObjective-C
为UIViewController
,现在你可以在XCode里面使用自己的模板创建UIViewController了,但是我们的目的还没达到,go on;
打开上一步修改的UIViewController
文件夹,编辑___FILEBASENAME___.m
文件,随便加,随便改;
3.项目模板
暂时没用到,用到再补充吧;