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 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 其它:
忘了
<##>了,把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-CTemplateInfo.plist到MyViewController.xctemplate;打开
TemplateInfo.plist,删除Platforms键,展开Options删除Item2Item3; 展开Item1->Values,增加一个ItemUIViewController;修改
NSViewControllerObjective-C为UIViewController,现在你可以在xCode里面使用自己的模板创建UIViewController了,但是我们的目的还没达到,go on;打开上一步修改的
UIViewController文件夹,编辑___FILEBASENAME___.m文件,随便加,随便改;
3.项目模板
暂时没用到,用到再补充吧;