在xCode中快速或者自动添加代码的几种方法

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;
  • 把这段代码拖到代码段列表;
  • TitleNSString 类型属性;
  • Summary 填快速添加 NSString 类型属性;
  • Completion Shortcut@procopy;
  • 其它默认,这样我们就能直接输入 @procopy 回车来添加我们的代码了;
1.5 其它:
  1. 忘了<##>了,把NSString改为<#NSString#>name改为<#name#>,这样我们就能使用Tab来定位到NSStringname上面,修改成其它类型和名字。

  2. 还有一点搞不懂,在.h文件的 @interface@end 之间可以实现,如果在.m文件中就不行,除非把作用范围改成All;如果有知道的,麻烦指点一下。

  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 这些信息我们能不能修改或者添加?

答案是肯定的;我们采用简单粗暴的方式,直接在系统模板的基础上修改;

  1. 进入~/Library/Developer/Xcode/Templates/File Templates,如果没有新建即可;这是自定义模板的路径,虽然我们可以在系统路径修改,但不建议这么做;

  2. 创建一个文件夹,命名为自定义模板;当然也可以用系统的文件夹名称命名(如Sound),这样你自定义的模板就会出现在Sound标签下;

  3. 在新建的文件夹下面创建一个后缀为.xctemplate的文件夹MyViewController.xctemplate,并复制系统目录下/Sound/Cocoa Class.xctemplate里面的NSViewControllerObjective-C TemplateInfo.plistMyViewController.xctemplate

  4. 打开TemplateInfo.plist,删除Platforms键,展开Options删除Item2 Item3; 展开Item1 -> Values ,增加一个Item UIViewController

  5. 修改NSViewControllerObjective-CUIViewController,现在你可以在xCode里面使用自己的模板创建UIViewController了,但是我们的目的还没达到,go on;

  6. 打开上一步修改的 UIViewController文件夹,编辑___FILEBASENAME___.m文件,随便加,随便改;

3.项目模板

暂时没用到,用到再补充吧;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容