Fork me on GitHub

第七讲.NSDate,category(分类),extension(延展),protocol(协议),delegate(代理)

 

一、掌握NSDate和NSDateFormatter的使用
    NSDate是Cocoa中⽤用于处理日期和时间的基础类,封装了某一给定的
时刻(含日期,时间,时区)。
    了解NSDate的创建,如何计算当前时间,时间间隔,以及时间日期与字符之间的互转.
 
    1>.NSDate创建,当地时间计算,时间按间隔计算,时间与字符之间的互转
 
 
 练习题一:计算当前时间与另一个固定时间的差
 
 
 
练习题二:字符串转化为日期对象
 
 
 
二、掌握Category的定义和使用(只能为类扩展类方法或实例方法)
1.主要作用是为:没有源代码的类添加方法
2.通过Category添加的方法会成为原类的一部分。从而达到扩展一个类的功能
   
3.如何定义Category:
           a. 新建文件
           b. 选择Objective-C Category模板
           c. 填写类名和分类名
           d. (.h)文件添加方法声明
           e. (.m)文件添加方法实现
           f. 需要使用的地方进行调用

4.caCategory的实现:

      /// NSString+SayHi.h 文件

        #import

     @interface NSString (SayHi)

      - (void)hi;

      @end

 

    // NSString+SayHi.m 文件

    #import "NSString+SayHi.h"

    @implementation NSString (SayHi)

    #pragma mark 实现hi方法

     - (void)hi

     {

         NSLog(@"这是通过category为NSString创建的hi方法");

     }

 

      @end

 

5.category与子类的区别

 

 
 
 
 
练习题一:翻转或倒叙输出一个字符串(注意category只是扩展类方法其包括相应的.m和.h文件)
 
 
 
 
 
 
 
 
 
练习题二:Category与NSDate的综合使用
     使用Category为NSDate类添加一个类方法(deWithDateString:),实现将下述字符串转换为NSDate对象。 将@“20140402142850”转换NSDate
 
 
 
 
三、掌握Extension的定义和使用

    1.Extension的主要作用是为类添加‘私有’方法。
     我们在设计一个类的时候,有些方法需要对外公开(我们称为接口),有些方法可能仅仅内部使用(比如,是某个方法的一个小步骤)
     Extension的功能是帮我们去管理这些内部使用的方法(“私有”方法)
   2.Extension特点:
     a. Extension的语法格式和Category很相似
     b.相当于把Category的.h文件挪到了原始类的.m文件中,同时,其实现也是在原始类的.m文件内完成
     c. Extension针对的是自己的类,必须有源代码的类
 3.extension与category的区别
 

定义Extension:在Person.m文件中添加Extension:
 
 
四、掌握Protocol的定义和使用
  1.Protocol又名协议,是iOS开发中常用技术
  2.协议是一套标准(一堆方法的声明),只有(.h)文件
  3.接受协议的对象实现协议中定义的方法
  4.Protocol特点:(就像签订合同一样,遵循合同执行响应任务)
     a. 协议就像一张任务清单(或便利贴),上面写了一堆需要处理的事。清单交给谁,谁就要去完成清单上规定的任务。
     b. 协议定义好之后,需要有类去遵守这个协议,实现协议里面的方法
     c. 遵守协议即在(.h)文件的父类名后写上<协议名>。实现协议里的方法即在(.m)文件中实现协议中的方法。相当于给这个类添加了脱岗额方法。这个类的实例就可以调用这些方法。
 
    实例:student类协议.相应的studentProtocol.h  student.h  student.m   文件内容代码
 
studentProtocol.h协议的声明(协议只有.h文件)
 
student.h文件的声明(主要体现在遵循协议上)
 
student.m文件的实现,(执行协议相关方法)
 main.m中对方法的调用
 
 
五、掌握delegate的使用(代理)

     1.Protocol的核心使用场景是实现delegate设计模式
     2.delegate音译代理。通俗的讲就是代理商,主要的任务是帮你完成了一些任务
比如:保姆就可以认为是delegate,主要的任务是帮你带孩子、做饭、洗衣服等
    3.使用场景:
        凡是某些任务自己不去实现,想让别人去实现的时候,就可以指定一个代理,让代理帮你去做。你只需要通知代理去做某些事。

   4.代理使用方法:首先建立协议(只有.h文件声明一些方法)

                  然后让建立类的协议双方分别遵守协议

                  再次,让协议一方变成另一方的类中的的一个属性,这是建立代理的关键步骤

                  最后,让双方分别对协议方法进行相应的实现,再调用就可以完成代理事件了!

实例分析:建立一个保姆协议,包含带孩子,做饭等方法。

协议与代理的综合使用

nurseProtocol.h协议声明

 

mather.h文件 遵循协议,以及引入代理,将保姆代理作为自身的一个属性(代理的标志)此为引入代理的关键步骤

 

mather.m文件对协议的执行情况

 

nurse.h文件引入协议并遵循字协议

 

nurse.m执行协议相关方法

main.m文件调用

 

 

 

 

 

 

 

 

 

 

posted @ 2015-08-30 23:29  DengHuiCheng  阅读(252)  评论(0编辑  收藏  举报