类的扩展
来源:互联网 发布:上瘾网络剧全集资源 编辑:程序博客网 时间: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
- UIView的类扩展,扩展CGRect
- Math类的扩展
- CxSkinButton类的扩展
- 类的扩展
- 类的扩展
- OC 类的扩展
- 07 类的扩展
- OC----类的扩展
- 类的扩展
- UIColor类的扩展
- UI类的扩展
- 类的扩展
- 类的扩展
- C#类的扩展
- 类的扩展
- 类的扩展
- 类的扩展
- 类的扩展
- 一切成功源于积累——20150723 货币对之澳美 典型跌势 5分钟定理 八连斩 再次中计
- ADO.NET TableMappings使用方法
- oc013---oc程序的整体语法结构
- Java集合框架
- centos6.6下安装GreenPlum4.3.5.2
- 类的扩展
- 2015 Multi-University Training Contest 2 1009 I Wanna Become A 24-Point Master(HDU5308) 构造
- Android-Service
- Permutations II
- 为什么写技术博客对新人如此重要?
- iOS 学习资料整理
- shell脚本对服务器的监控
- 关于RTP时间戳及多媒体通信同步的问题/H264关于RTP协议的实现
- 暑假夯实安卓基础系列二