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#> <NSObject>
<#methods#>
@end
-
<##>
作用是占位,##
之间可以输入提示文字; - 由于是系统自带的代码段,所以我们不能修改;
1.3 接下来,我们来创建自己的代码段:
- 在项目中选中已经存在的代码,拖动到刚才代码段列表,弹出代码段编辑窗口;
-
Title
:表示代码段列表展现的名字; -
Summary
:表示副标题,会出现在名字后面以"-"分开,还会出现在使用时的提示信息里面; -
Platform
:支持的平台; -
Language
:使用的语言; -
Completion Shortcu
t:快捷输入,貌似只能以字母开头(支持少数符号,如@); -
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 其它:
忘了
<##>
了,把NSString
改为<#NSString#>
,name
改为<#name#>
,这样我们就能使用Tab来定位到NSString
和name
上面,修改成其它类型和名字。还有一点搞不懂,在.h文件的
@interface
和@end
之间可以实现,如果在.m文件中就不行,除非把作用范围改成All;如果有知道的,麻烦指点一下。如果不想要某个代码段,可以前往
/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
;打开
TemplateInfo.plist
,删除Platforms
键,展开Options
删除Item2
Item3
; 展开Item1
->Values
,增加一个ItemUIViewController
;修改
NSViewControllerObjective-C
为UIViewController
,现在你可以在xCode里面使用自己的模板创建UIViewController
了,但是我们的目的还没达到,go on;打开上一步修改的
UIViewController
文件夹,编辑___FILEBASENAME___.m
文件,随便加,随便改;
3.项目模板
暂时没用到,用到再补充吧;