类的扩展

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

NSString *str1 = @"2015-07-24 19:00:00";
NSString *str1 = @"2015-07-24 21:00:00";
//创建类
//判断输入日期是否在同一个月份
//首先在 .h 文件中定义
 -(BOOL)isEqualTwoDate:(NSString *)otherDate;
 //在.m 文件中
  -(BOOL)isEqualTwoDate:(NSString *)otherDate
  {
  NSString *str1 = [self substringWithRange:NSMakeRange(5,2)];
  NSString *str2 = [otherDate substringWithRange:NSMakeRange(5,2)];
  //或者写成 if ([str1 isEqualToString:str2]){
  // return YES;
 //  }
    return [str1 isEqualToString:str2];
}
//在main中调用
    NSString *str = @"2015-07-24 19:00:00";
    NSString *str2 = @"2015-07-24 20:02:00";
if ( [str isEqualTwoDate:str2] ){
    NSLog(@"%@",@"月份相同");
}else{
    NSLog(@"%@",@"月份不相同");
}
//拼接两个日期
// .h文件
 -(NSString * )appendTwoDate:(NSString *)otherDate;
 //.m文件
 -(NSString * )appendTwoDate:(NSString *)otherDate
 {
         NSString *time = [NSString stringWithFormat:@%@-%@",[self substringWithRange:NSMakeRange(0,16)],[otherDate substringWithRange:NSMakeRange:(11,5)]];
         return time;
 }
//.m文件
NSString *time1 = @"2015-07-24 19:00:00";
NSString *time2 = @"2015-07-24 24:00:00";
NSLog(@"%@",[time1 appendTwoDate:time2]);
//给定两个事假,判断时间是否在这两个时间区间内
//.h文件
 -(BOOL)isInTimeZone:(NSString *)beginTime end:(NSString *)endTime;
 //.m文件
 -(BOOL)isInTimeZone:(NSString *)beginTime end:(NSString *)endTime
 {
     NSString *myDate = [self substringWithRange:NSMakeRange(8,2)];
     NSString *beginDate = [beginDate substringWithRange:NSMakeRange(8,2)];
     NSString *endDate = [endDate substringWithRange:NSMakeRange(8,2)];
     if ( [myDate compare:beginDate] == 1 && [myDate compare:endDate]==-1 )
     {
     return 1;
    }
    return 0;
    }
 //main文件
NSString *time0 = @"2015-07-19 12:00:00"
NSString *time1 = @"2015-07-10 19:00:00";
NSString *time2 = @"2015-07-24 24:00:00";
NSLog(@"%d",[ time0 isInTimeZone: time1 end:time2])
//传过去一个字符串,返回一个时间的对象NSDate类型
//方法一:用方法的方式
    //.h文件
    -(NSDate *)stringToDate;
    //,m文件
    -(NSDate *)stringToDate{
    //设置格式
    NSDateFormatter *formatter = [[ NSDateFormatter alloc ]init];
    [ fomatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSDate *date1 = [ formatter dateFromString:self];
    return date1;
    }
    //main文件
    NSString *time = @"2015-07-12 19:00:00";
    NSLog (@"%@",[time stringToDate]);

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

类的.m文件:
// 这其中的name属性和create方法只能在自己类中使用.
@interface Student ()
@property(nonatomic, copy)NSString *name;
@end
@implementation Student
- (void)create{
_name = @”你好”;
NSLog(@”%@”,_name);
}
@end

协议
1.在类的.m中声明协议@protocol,协议名为 类名+Delegate,然后写协议内容.(@required必须实行 @optional选择实行);
//1.声明一份协议
//@protocol 协议关键词
@protocol Marry
//协议的内容
//协议方法的声明
//@required 是必须实现的方法,默认是必须实现的方法
//@optional 是可选择执行的方法
@required
-(void)makeMoney;
@optional
-(void)cook;
@end
@interface Girl : NSObject
//设置代理人的属性
@property(nonatomic,assign)id
delegate;
//两个人结婚后协议才正式的生效
-(void)getMarry;
//3.让搭理人去执行协议的方法
@implementation Girl
-(void)getMarry{
[self.delegate makeMoney];
}
//4.引头文件写完后,boy需要签订协议
@interface Boy : NSObject
//5.在main中设置代理人
//创建两个人
Boy *yadang = [[Boy alloc]init];
Girl *xiawa = [[Girl alloc]init];
xiawa.delegate = yadang;
//通过调用结婚的方法,来执行内部的协议方法
[xiawa getMarry];
//6.定义方法
-(void)makeMoney
{
NSLog(@”买买买”);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值