OC 基础之—(NSDate, 类目 Category,协议Protocol, 延展,委托代理)

来源:互联网 发布:为什么程序员喜欢用mac 编辑:程序博客网 时间:2024/05/21 17:19
一 时间类
1.NSDate  日期类  继承自 NSObject, 代表着一个时间点
初始化方法:
NSDate *date = [NSDate date];
打印出来的是0时区的时间,格林尼治时间.
2.使用 NSDate 的 dateWithTimeIntervalSinceNow方法初始化时间:
1⃣️参数为正的时候,表示是相比较0时区,未来的某个时间
2⃣️参数为负表示是相比较0时区,过去的某个时间
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:8 * 60 * 60];  未来
NSDate *date = [NSDate dateWithTimeIntervalSinceNow:-24 * 60 * 60];  过去
3.时间间隔(NSTimeInterval)
用来计算时间点的时间间隔,返回值是以秒为单位的数据.
NSTimeInterval timeInterval = [tomorrow timeIntervalSinceDate:yesterdayDate];
timeIntervalSince1970:方法是现在时刻距离1970年的时间间隔
4.时间格式类(NSDateFormatter)  继承自 NSFormatter
用于把 NSDate 按照某种时间格式输出,转换为 NSString, 创建一个时间格式类对象
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
设定日期格式
[formatter setDateFormat:@“yyyy-MM-dd hh时 mm分ss秒"];
将时间对象转化为字符串
NSString *dat  = [formatter stringFromDate:[NSDate date] ];

将字符串转化为日期(dateFromString:)

5.设定时区(NSTimeZone)
根据填写的名称判断时区
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@“China"];
也可以使用简写
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@“PST"];

二 类的扩展(为类添加子类)
1.Extension  对私有的方法和特征进行扩展
注意:可以对类添加实例变量
在设计一个类的时候,有些方法需要对外公开(接口),有的方法仅仅类内部使用(比如:某个方法的一个小步骤)
扩展的私有方法不能在外部被访问,只能类的内部进行访问.

三 分类或类目(Category)
主要作用是为没有源代码的类添加方法
分类的作用:在不改变类内容的基础上,可以为类增加一些方法
   使用注意:
1⃣ 分类只能增加方法,不能增加成员变量
2⃣ 分类方法实现中可以访问原来类中的成员变量
3⃣ 分类可以重新实现原来类中的方法,但是会覆盖掉原来的方法,会导致原来的方法没法在使用
4⃣  方法调用的优先级:现在分类中查找对应的方法,如果没有找到,再到父类中查找,分类(最后编译的分类优先)à原来类à父类
1.      给系统类添加分类
1⃣ 创建类方法,计算出字符串中的阿拉伯数字的个数
int count = 0;
+ (int)numberCountOfString:(NSString *)str{
for(int i = 0; i < str.length;i ++){
  unichar c = [str characterAtIndex:i];
if( c >= ‘0’ && c<=’9’){
count++;
     }
    }
 return count;
}
        2⃣  创建对象方法,计算出字符串中的阿拉伯数字的个数
         int count = 0;
         - (int)numberCount{
   for(int i = 0; i < str.length;i ++){
      unichar c = [str characterAtIndex:i];
       if( c >= ‘0’ && c<=’9’){
       count++;
     }
}
return count;
}
分类中是不能添加实例变量的
    category 和 extension的区别:
     Extension 为已知类添加私有的实例变量和方法. Category为没有源代码的类添加类方法和实例方法
     Extension 里能够添加实例变量, Category不能添加实例变量
     Extension文件只有. h文件,而 Category同时生成一对.h和. m文件
     Extension 一般不建文件,写在类的.m 文件中
四 protocol协议(**.h)
协议写在父类的后面用一堆<>括起来
在定义协议的时候使用关键字@required 和@ optional, 使用@ required 修饰的方法是必须实现的方法,@optional修饰的可以选择实现
五 协议和代理是 iOS 中比较重要的内容,后面还会进一步讲解
0 0
原创粉丝点击