说到IOS类的模板,有些人感觉很陌生,但是只要有开发过IOS程序的人,其实都用过类的模板,只不过是用的系统自带的类的模板。

例如创建一个ClassTemplateVC继承于UIViewController 创建出来的ClassTemplateVC如下:

#import "ClassTemplateVC.h"

@interface  ()

@end

@implementation ClassTemplateVC

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} /*
#pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/ @end

会有viewDidLoad 和 didReceiveMemoryWarning方法,其实我们无时不刻的使用系统给咱们提供的类模板。

使用类的模板会提高开发的效率,例如在一些大的项目中,我们经常封装一个出一个VC,让其他VC都继承于这个VC 在这个VC中实现基本的方法和逻辑。这样在Xcode中添加自定义的类模板时,其他人继承这个VC的时候,这些基本的方法和逻辑就不用写了。

那如何添加自定义的类模板呢??

举个简单的例子,在一个VC中经常有点击按钮返回上一级页面的操作。要想以后继承这个VC的时候都会有下面新添加的方法

第一步:添加想要的方法和逻辑

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
} // 新添加的方法
- (void)backBtnClick:(UIButton *)sender
{
[self.navigationController popViewControllerAnimated:YES];
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

第二步:把.h文件替换成如下的代码(粘贴复制即可)

//
// ___FILENAME___
// ___PROJECTNAME___
//
// Created by ___FULLUSERNAME___ on ___DATE___.
//___COPYRIGHT___
// ___IMPORTHEADER_cocoaTouchSubclass___ @interface ___FILEBASENAMEASIDENTIFIER___ : ___VARIABLE_cocoaTouchSubclass___ @end

第三步:把对应的.m文件的后替换成如下代码:

//
// ___FILENAME___
// ___PROJECTNAME___
//
// Created by ___FULLUSERNAME___ on ___DATE___.
//___COPYRIGHT___
// #import "___FILEBASENAME___.h" @interface ___FILEBASENAMEASIDENTIFIER___ () @end @implementation ___FILEBASENAMEASIDENTIFIER___ - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
} // 新添加的方法
- (void)backBtnClick:(UIButton *)sender
{
[self.navigationController popViewControllerAnimated:YES];
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} /*
#pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/ @end

第四步:在桌面上或者其他地方新建一个文件夹如下图

命名规范为:类模板的名(ClassTemplateVC)+Objective-C

第五步:把刚才修改的.h,.m文件复制到第四步创建的文件夹中如下图

第六步:把.h,.m文件命名为如下:

注:每个类模板的文件夹下面都是这样命名的___FILEBASENAME___.h,___FILEBASENAME___.m(复制粘贴即可)

第七步:找到系统类模板存放的目录

这里是Xcode6类模板的路径:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates/Source

图片如下:

注:这个路径是Xcode6中的路径。以后有可能会变的。

第八步:修改系统的模板配置文件(或者把TemplateInfo.plist文件复制出来修改完成后,替换原有的,这时候需要输入密码)

利用上面的路径找到TemplateInfo.plist文件如下图

打开这个文件点击Option->Item 1->Suffixes/Values

1.在Suffixes里面添加自定义的模板类的类名以及模板类所继承的类名

2.在Values下面添加自定义模板类的类名

如下图:

第九步:把第四步创建的文件夹复制到第七步的路径下(TemplateInfo.plist 同级目录下)

大功告成。。。。

测试一下新建一个 ClassTemplateTestVC如下:

成功创建后:

ClassTemplateTestVC.m里面的内容如下:

//
// ClassTemplateTestVC.m
// ClassTemplate
//
// Created by StephenLi on 15/7/16.
// Copyright (c) 2015年 StephenLi . All rights reserved.
// #import "ClassTemplateTestVC.h" @interface ClassTemplateTestVC () @end @implementation ClassTemplateTestVC - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
} // 新添加的方法
- (void)backBtnClick:(UIButton *)sender
{
[self.navigationController popViewControllerAnimated:YES];
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} /*
#pragma mark - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/ @end

有了刚才的- (void)backBtnClick:(UIButton *)sender方法了。说明添加自定义类模板已成功。。。

测试工程的目录如下:

以上就是自定义模板的全过程。希望对大家有所帮助。

Xcode6中如何使用自定义的类模板的更多相关文章

  1. YTU 2618: B 求类中数据成员的最大值-类模板

    2618: B 求类中数据成员的最大值-类模板 时间限制: 1 Sec  内存限制: 128 MB 提交: 430  解决: 300 题目描述 声明一个类模板,类模板中有三个相同类型的数据成员,有一函 ...

  2. 2.3在LeetCode中使用我们自定义的类

    在上一节中我们使用的是java提供了的类,这一小节中我们就来学习一下如何在LeetCode中使用我们自定义的类. 其实很简单,我们只需把我们编写的自定义类,拷贝到LeetCode提供的类中,形成类中类 ...

  3. 分布式项目中Spring security自定义权限类

    package cn.lijun.core.service; import cn.lijun.core.pojo.seller.Seller;import org.springframework.se ...

  4. 如何在Web引用中使用项目自定义的类

    这个是老架构了,不推荐现在这么用,维护一个老项目记录一下. 项目中WebService和客户端是在一个解决方案下,实体类是一个公用的Project,如果使用Web引用自动生成的类会缺少一些实体类定义的 ...

  5. Spring Boot中使用Lombok消除POJO类模板代码

    首先,要让IDE支持Lombok,这里以idea为例进行介绍. 点击项目的“File”-—>"settings"—>"Plugins",在marke ...

  6. C++进阶-1-模板基础(函数模板、类模板)

    C++进阶 模板 1.1 函数模板 1 #include<iostream> 2 using namespace std; 3 4 // 模板 5 6 // 模板的简单实例 7 // 要求 ...

  7. C++学习笔记36:类模板

    类模板的目的 设计通用的类型式,以适应广泛的成员数据型式 类模板的定义格式 template<模板形式参数列表>class 类名称{...}; 原型:template<typenam ...

  8. C++:类模板与模板类

    6.3 类模板和模板类 所谓类模板,实际上是建立一个通用类,其数据成员.成员函数的返回值类型和形参类型不具体指定,用一个虚拟的类型来代表.使用类模板定义对象时,系统会实参的类型来取代类模板中虚拟类型从 ...

  9. C++_进阶之函数模板_类模板

     C++_进阶之函数模板_类模板 第一部分 前言 c++提供了函数模板(function template.)所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定,用一个虚拟的类型来 ...

随机推荐

  1. Windows Store App Image开发示例

    通过上面的介绍,读者已经了解了Image对象及ImageBrush对象的使用方法和常用属性,在实际的开发工作中,比较常用的是Image对象,下面以一个幼儿园识物识字卡应用为例,来帮助读者更好的理解Im ...

  2. 根据屏幕大小动态设置字体rem

    1.根据屏幕大小动态设置字体rem var docEl = document.documentElement, //当设备的方向变化(设备横向持或纵向持)此事件被触发.绑定此事件时, //注意现在当浏 ...

  3. PDF 补丁丁 0.5.0.2731 发布(增加去除页面表单和链接水印功能)

    新的版本增加了简单的删除表单和链接批注的功能,使用该功能可去掉某些软件打上的水印. 在 PDF 文档选项中选中“清除页面所有表单”和“清除页面所有链接批注”项后,程序将会删除页面的表单和链接批注. 效 ...

  4. C#中Thread与ThreadPool的比较

    最近同事在编写一个基于UPD RTP协议的通信软件,在处理接收Listen时,发现了一个问题到底是用Thread还是ThreadPool呢? 我看同事的问题比较有典型性,还是做以整理培训一下吧 Thr ...

  5. 使windows隐藏文件全部显示出来

    win+R => cmd=>attrib -s -b *.*  /S /D 找出所有隐藏文件夹—— FindHidden

  6. HttpRequestUtil

    package com.didichuxing.tempdirreader; import com.alibaba.fastjson.JSONObject; import java.io.Unsupp ...

  7. c语言调用函数打印一维数组-2-指针

    方法一(规范): #include <stdio.h> #include <math.h> #include <stdlib.h> //函数预声明 ], int m ...

  8. 作业七:团队项目——Alpha版本冲刺阶段004

    今日进展:我们的扫雷基本界面已经差不多了,准备开始编写内部代码. 今日安排:做好界面,准备开始代码编写.

  9. 适合PHP学习者的学习路线 10个PHP优化技巧

    适合PHP学习者的学习路线: (1) 熟悉HTML/CSS/JS..网页基本元素,完成阶段可自行制作简单的网页,对元素属性相对熟悉 (2) 理解动态语言的概念和运做机制,熟悉基本的PHP语法 (3) ...

  10. Ext JS 4 老特征:statics 静态的变量和方法

    l   一.静态的变量和静态的方法 [译文原创Learning Ext JS 4 第51页] Statics的方法只属于类本身,而不属于任何一个实例,这就决定了我们是在定义类的内部来用statics方 ...