美文网首页
模板类的创建和详细探究

模板类的创建和详细探究

作者: as_kj | 来源:发表于2017-04-11 16:55 被阅读0次


    项目中我们创建一个控制器的时候,可能需要它遵守一些规范,比如不同的方法要分类,如下面

    图1

    解决方案有三种 :

    1 一个一个写这些方法分类标志

    2 将它们做成代码块,每次需要的时候快捷创建

    3 建一个类模板,控制器建成的时候就带有它们

    显然第一种方法最笨的,第二种方式也可以,不过我建议的是第三种方式,创建的时候就自带这个分类,多方便,下面主要讲一下第三种方式

    要创建一个模板类,首先我们来看一下系统的模板类,进入目录

    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates/Source

    图2

    因为我们要建的是控制器的模板,所以我们就来看一下系统控制器UIViewController的模板

    UIViewControllerXIBObjective-C和UIViewControllerObjective-C,一个带xib的一个不带xib的,其实你比较两个就会知道,他们的.h和.m文件是一模一样的,只不过一个多了一个xib而已,

    我们再来看一下他们的.h文件

    图3

    1)DATE:标识当前时间;

    2)FILENAME:带文件后缀的全名;

    3)FILEBASENAME:不带文件后缀的名字;

    4)FULLUSERNAME:当前的用户名

    6)PROJECTNAME:工程名字;

    7)FILEBASENAMEASIDENTIFIER:VC 类名称;

    8)IMPORTHEADER_cocoaSubclass:导入的头文件。

    这是系统控制器的模板,而当我们建一个控制器时是下面这样的

    图4

    思考下,系统是怎么通过自己的模板文件到上面的控制器中类名、父类、头文件的映射呢,应该很容易想出,这是一个类似key-value的映射,所以肯定有一个字典来专门配置这些信息,仔细找下就会发现,还是在刚才目录下有一个TemplateInfo的plist文件

    图5

    打开后,如下,在几个关键地方做了标志,

    图6

    上图的父类名字,头文件是和图4的父类名字、头文件一一对应的

    那么图4的类名是和谁对应呢,看下图

    图7

    上图的创建时默认的类名、创建时选择的父类和图6的创建时默认、创建时选择的父类是对应的,而类名最终肯定还是自己输入的,那么对应的就是图4的的类名,

    而图6的xib配置项中的xib对应的父类名字也和图7的创建时选择的父类是对应的,意思就是你选了那个父类,他在这个配置项中有,那么Also create XIB file这项就能勾选,就能创建对应xib

    好了,上面讲了系统的控制器模板类怎么到控制器的映射,那么我们就来自己定义的模板类,

    满足下面两点:

    1 项目中我们创建的控制器可能都需要继承自一个基类,

    2 我们创建控制器后控制器自己就有了方法分类标志,如图1

    我们自己建一个模板文件夹还是放到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates/Source路径下

    然后把图1的两个控制器文件夹拷贝过来,修改这两个文件夹的名字,改成自己的模板控制器名字,前缀一定要是你要创建的模板类的父类名字,这个一定要改,不然创建控制器的时候是创建不了的因为找不到,而且两个最好都要有,因为它们一个对应有xib,一个对应无xib,你缺少了哪一个的话,那么对应的就创建不了的,比如你缺少无xib的文件夹,那么你创建无xib的控制器时是会创建失败的,同样找不到

    图8

    然后再把两个文件夹的.m文件改成你想要的模板样式,

    图9

    那么接着就是关键一步了,修改你自己模板文件夹下的TemplateInfo文件

    图10

    好了,,明白了原理之后,修改就是这么简单,还有,上面那个DLBuyerBaseController是我项目中的父类,如果是你的话,肯定是要改成你项目中的父类的,demo本文最后会附上,

    这是控制器模板,我们再来看下UIView的,平时项目中创建View的时候,每次创建两个.h.m文件后还有创建一个xib和它关联,有没觉得很蛋疼,是吧,那么能不能我搞一个view模板,创建view的时候,可以勾选是否关联xib,其实以前是可以关联的,后来苹果把它屏蔽掉了,不知道为啥,下面我们来看一下怎么搞,其实很简单,只要你明白了上面的原理,如图

    图11

    自己建一个view的模板文件夹,然后把图5的也就是系统的view两个模板拷贝过来,这里我没有搞父view,所以文件夹的名字都不用改,直接修改TemplateInfo文件

    图12

    只需要把这一项加进去就可以,就这么简单,再看系统的,它原来的是没有的

    图13

    好最终创建时效果

    图14

    本文模板代码https://github.com/aszkj/KJTemplateClass

    参考链接

    http://mp.weixin.qq.com/s?src=3×tamp=1491791123&ver=1&signature=DtOzsztiQ8h*V14Yl21RkYFlVlw3aMVxFvXi3*f0QNO0tI0xXcn6az6p*6aA*lLe8f1OsHoH7i3NXoPqLtwh0NsVChDA4vk5dk107IunfNm67EiMBz5ZZFT8BTUH83W3aDXdhtDQJGXdmDtWeIAmMDziEL9zEsWzIzHfeezDdDU=

    相关文章

      网友评论

          本文标题:模板类的创建和详细探究

          本文链接:https://www.haomeiwen.com/subject/etslgttx.html