[objective-C] 06.类的扩展

NSDate的使用:
  1. NSDate是Cocoa中用于处理日期和时间的基础类封装了某一给定时刻的类包括日期和时间
  2. 使用+date方法获取当前日期和时间,也可以直接实例化一个NSDate对象
  3. NSDate的使用:
    [objective-C] <wbr>06.类的扩展
  4. NSTimeinterval的使用:
    a. NSTimeInterval是一个以秒为单位的时间段,类型为double
    b. 可以使用-initWithTimeIntervalSinceNow方法传入一个NSTimeInterval对象创建一个NSDate对象
        [objective-C] <wbr>06.类的扩展



NSDateFormatter的使用:
  1. NSDateFormatter是iOS中的日期格式类,主要的功能是实现代表日期的字符串和NSDate进行互转,提供了系统预置的字符串格式,还允许用户自定义字符串格式。我们可以设置时区,月的名称、纪元的符号、local、calender、AM/PM、weekday的符号等
  2. 常见得时间格式化字符串:y 年、M 年中的月份、d 月份中的天数、H 一天中的小时数(0-23)、h am/pm 中的小时数(1-12)、m 小时中的分钟数、s分钟中的秒数
  3. 指定日期格式:
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];   
  4. NSDateFormatter可以将日期转化为相对应的字符串,同意可以将字符串转化为响应的日期
  5. 日期转化为字符串:
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSString *locationString = [format stringFromDate:[NSDate date]];
  6. 时间字符串转化为想对应的日期:
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSString *dateStr = @"2008-08-08 20:08:08";
    NSDate *date = [formatter dateFromString:dateStr];
    // 注意:不能为任意日期格式的字符串创建NSDateFormatter对象


Category的定义和使用:
  1. Category也叫分类或类目
  2. 主要作用是为:没有源代码的类添加方法
  3. 通过Category添加的方法会成为原类的一部分。从而达到扩展一个类的功能
  4. 如何定义Category:
    a. 新建文件
    b. 选择Objective-C Category模板
    c. 填写类名和分类名
    d. (.h)文件添加方法声明
    e. (.m)文件添加方法实现
    f. 需要使用的地方进行调用
  5. Category的实现:

    /// 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(@"这是通过categoryNSString创建的hi方法");

    }

     

    @end

  6. Category与子类的区别:
    [objective-C] <wbr>06.类的扩展



Extension的定义和使用:
  1. Extension的主要作用是为类添加‘私有’方法。
  2. 面向对象编程另外一个名字叫面向接口编程。
  3. 我们在设计一个类的时候,有些方法需要对外公开(我们称为接口),有些方法可能仅仅内部使用(比如,是某个方法的一个小步骤)
  4. Extension的功能是帮我们去管理这些内部使用的方法(“私有”方法)
  5. Extension特点:
    a. Extension的语法格式和Category很相似
    b. 相当于把Category的.h文件挪到了原始类的.m文件中
    c. Extension针对的是自己的类,必须有源代码的类
  6. 定义Extension:在Person.m文件中添加Extension:

    #import "Person.h"

    // Extension

    @interface Person (SayHi)

    // 此处写方法列表

    - (void)sayHi;

    - (void)sayHaHa;

    - (void)sayGoodBye;

    @end

    @implementation Person

    // 实现Extension中的方法

    - (void)sayHi

    {

        NSLog(@"hi");

    }

    - (void)sayHaHa

    {

        NSLog(@"haha");

    }

    - (void)sayGoodBye

    {

        NSLog(@"goodbye");

    }

    @end

  7. Category和Extension的区别:
    [objective-C] <wbr>06.类的扩展



Protocol的定义和使用:
  1. Protocol又名协议,是iOS开发中常用技术
  2. 协议是一套标准(一堆方法的声明),只有(.h)文件
  3. 接受协议的对象实现协议中定义的方法
  4. 如何定义Protocol:

    /// 定义协议

    // @protocol开始 @end结束

    @protocol MarryProtocol <<span style="color: #6122ae">NSObject>

    // @required修饰的方法是必须实现,默认是@required

    @required

    - (void)makeMoney;

    // @optional修饰的方法是可选实现

    @optional

    - (void)washCloth;

    - (void)cook;

    @end

  5. Protocol特点:
    a. 协议就像一张任务清单(或便利贴),上面写了一堆需要处理的事。清单交给谁,谁就要去完成清单上规定的任务。
    b. 协议定义好之后,需要有类去遵守这个协议,实现协议里面的方法
    c. 遵守协议即在(.h)文件的父类名后写上<协议名>。实现协议里的方法即在(.m)文件中实现协议中的方法。相当于给这个类添加了脱岗额方法。这个类的实例就可以调用这些方法。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值