类的扩展

来源:互联网 发布:上瘾网络剧全集资源 编辑:程序博客网 时间:2024/05/16 12:39

一 , 类目

系统已经写好的类目: 按照功能对系统的类方法进行区分.类目从@interface开始,后面是当前类的名字,类名后是分类的功能到@end结束我们创建的类目,一般是为了把一些系统的类进行功能扩充.

习题

1.输入两个日期 判断两个日期是否在同一个月//.m文件-(BOOL)isEqualTwoDate:(NSString *)otherdate{    return [[self substringWithRange:NSMakeRange(5, 2)] isEqualToString:[otherdate substringWithRange:NSMakeRange(5, 2)]];}// main.m文件NSString *str1 = @"2015-10-24 12:00:00";NSString *str2 = @"2015-10-30 20:00:00";BOOL isTrue = [str1 isEqualTwoDate:str2];if (isTrue) {    NSLog(@"月份相同");} else {    NSLog(@"月份不同");}----------------------------------------------------------2.输入两个日期,将其拼接成 yyyy-MM-dd HH:mm - HH:mm 的形式//.m文件-(NSString *)appendTwoDade:(NSString *)otherDate{    return [NSString stringWithFormat:@"%@ - %@",[self substringToIndex:16], [otherDate substringWithRange:NSMakeRange(11, 5)]];}// main.m文件NSString *str1 = @"2015-10-24 12:00:00";NSString *str2 = @"2015-10-30 20:00:00";[str1 appendTwoDade:str2];NSLog(@"%@", [str1 appendTwoDade:str2]);----------------------------------------------------------3.判断一个时期是否在两个时期区之间//.m文件-(bool)isInTimeZone:(NSString *)beginTime                end:(NSString *)endTime{    return [self compare:beginTime] > 0 && [self compare:endTime] < 0;}// main.m文件NSString *str = @"2015-10-29 12:00:00";NSString *str1 = @"2015-10-24 12:00:00";NSString *str2 = @"2015-10-30 20:00:00";NSLog(@"%d", [str isInTimeZone:str1 end:str2]);----------------------------------------------------------4.用类方法和实例方法实现:传过去一个字符串, 返回一个时间的对象NSDate 类型//.m文件-(NSDate *)stringToDate{    NSDateFormatter *formatter=[[NSDateFormatter alloc]init];    [formatter setDateFormat:@"yyyy-MM-dd HH-mm-ss"];    return [formatter dateFromString:self];}+(NSDate *)stringToDate:(NSString *)date{    NSDateFormatter *formatter=[[NSDateFormatter alloc]init];    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];    return [formatter dateFromString:date];}// main.m文件NSString *timeStr=@"2015-7-23 17-18-10";NSLog(@"%@", [timeStr stringToDate]);NSLog(@"%@", [NSString stringToDate:timeStr]);

二 , 延展

延展以@interface 开头, 然后写当前延展的类名,类名后加一个();到@end结束一般延展会写在自己写写的.m文件中, 把一些不想让外部调用的属性放在延展了, 这样这条属性只能在类的内部使用, 外部使用不了,尽最大的可能保护当前类的安全类目一般都是给看不见.m的系统文件进行扩展,扩展一般是针对自己的类进行操作

流程 (以Student类为例)

//.m文件@interface Student ()@property(nonatomic, copy)NSString *name;@end@implementation Student-(void)create{    _name = @"你好";    NSLog(@"%@", _name);}@end

三 , 协议

流程

准备工作:创建两个 Girls 和  Boy  类.----------------------------------------------------------// Girls.h 文件// 1.声明一份协议// @protocol 协议的关键词@protocol Marry <NSObject>// 协议的内容// 协议方法的声明// @required 是必须实现的方法 默认是必须是实现的方法// @optional 是可选择执行的方法-(void)makeMoney;@optional-(void)cook;@end@interface Girls : NSObject// 2.设置代理人的属性@property(nonatomic, assign)id<Marry>delegate;// 两个人结婚后,协议才正式的生效-(void)getMarry;@end----------------------------------------------------------// Girls.m 文件@implementation Girls-(void)getMarry{// 3.让代理人去执行协议里的方法    [self.delegate makeMoney];}@end----------------------------------------------------------// boy.h 文件// 4.引完头文件之后, boy需要签订协议@interface Boy : NSObject<Marry>@end----------------------------------------------------------// main.m 文件// 创建两个小人Boy *yadang = [[Boy alloc] init];Girls *xiawa = [[Girls alloc] init];// 5.设置代理人xiawa.delegate = yadang;// 通过调用结婚的方法, 来执行内部的协议方法[xiawa getMarry];----------------------------------------------------------// boy.m 文件@implementation Boy// 6.实现协议的方法makeMoney;-(void)makeMoney{    NSLog(@"买买买");}@end
0 0
原创粉丝点击