• 12.31日 上课笔记:关于 NSDate 类目 协议 延展


    =============================NSdate========================================

    跟时间有关的一个类。

    基本方法:

    NSDate  *nowDate = [NSDate date];//获得当前时间

    NSDate *tomorrow = [NSDate dateWithTimeInterval:24*60*60 sinceDate:nowDate];//从到当前时间到24*60*60秒以后的时间,就是明天的这个时间

    NSTimeInterval(时间秒)time = [nowDate timeIntervalSinceDate:(一个时间点)]  从一个时间点到nowDate这个时间点有多少时间。  

    重要方法 实现时间与字符串之间的互转

    时间转字符串(在UI里只有字符串才能有显示)  设置时间格式  

     NSDateFormatter *dateFormatter = [[NSDateFormatter  alloc]init];

        [dateFormatter setDateFormat:(时间格式:eq:yyyy-MM-dd HH:mm:ss)];

    [dateformatter stringFromDate:(时间)];//时间就会根据yyyy-MM-dd HH:mm:ss进行字符串的输出

     

    字符串转时间 设置时间格式跟以上相同

    NSDateFormatter *dateFormatter = [[NSDateFormatter  alloc]init];

        [dateFormatter setDateFormat:(时间格式:eq:yyyy-MM-dd HH:mm:ss)];

    [dateformatter setDateFormat:(字符串)];//注意:(这里字符串的格式要跟设置的时间格式一致,不然会导致时间无法输出)

    ================================类目===============================

    类目为系统内部的类,或者是没有源代码的类添加方法,不能添加实例变量

    添加的方法会成为原类的一部分,子类依旧可以使用

    类目的文件名为 原类名+文件名

    既可以添加实例方法也可以添加类方法

    一个类可以添加多个类目

    ========================= 延展=============================

    延展是自定义类的扩展功能的

     在类的.m文件上方,使用@interface关键字 构建延展

     在延展中,我们既可以声明方法,也可以声明实例变量(但是在类外就不能使用,只能作为类内使用)

     并且新添加的动向属于本类的私有变量(言外之意就是类外就不能使用,只能作为类内使用)

    ==========================协议==========================

    协议上课老师讲的比较乱,没有做什么笔记,尝试用自己语言组织记录

    协议有三个部分:委托方 协议方 协议

    协议是写在委托方点h文件中一堆方法的声明格式如下

     

    @protocol MarryProtocol <NSObject>

     

    @required

     

    -(void)washClothes;

     

    -(void)makeMoney;

     

    -(void)doHousework;

     

    -(void)cookDinner;

     

    @optional

     

    -(void)takeCareBaby;

     

    @end

    @required修饰的是必须完成的内容

    @optional修饰的是不是必须完成的内容 MarryProtocol是协议名字

    当在点h文件中必须声明一个代理对象属性

    @property (nonatomic,assign)id<MarryProtocol>delegate;

    id表示的是可以不同中类型的代理方来代理执行这些方法

     在委托方中的点m文件中。当执行某个方法时,委托方就会让代理方完成这个方法:eq:当委托方衣服脏了的时候执行衣服脏了方法时,就会判断代理方是否存在是否可以完成洗衣服这个协议,如果可以就让代理方执行洗衣服这个方法:如果程序

     

    -(void)clothesDirty{

     

        if (self.delegate != nil  && [self.delegate respondsToSelector:@selector(washClothes)]) {

     

            //代理对象不为空,而且代理对象实现了协议方法,才能让代理对象执行该方法。否则什么都不执行。

     

            [self.delegate washClothes];

     

        }

     

    }//衣服脏了

     

    代理方中 必须在自己的点h文件,引入委托方头文件并且遵循协议:

    eq:

    #import "委托方头文件"

    @interface Man : NSObject<MarryProtocol>

    并且在点m文件中完成协议中必须完成的方法。

     

     

     

  • 相关阅读:
    unity 凸多形顶点排序
    unity Plane
    Git MAC电脑Git使用
    Spine运行库指南
    VsCode TypeScritp整理Import
    TypeScript 扩展声明文件 .d.ts
    UnityEditor 编辑多个场景里的对象,Revert 预制件实例
    unity 球形插值
    研究生基础咨询
    ACSM-CPT 考试资料
  • 原文地址:https://www.cnblogs.com/naizui/p/5092566.html
Copyright © 2020-2023  润新知