类的扩展

来源:互联网 发布:上海美猴网络面试 编辑:程序博客网 时间:2024/05/16 15:52

//类目
//系统已经写好的类目:按照功能对系统的类方法进行区分
//类目从@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(@”买买买”);
}

0 0
原创粉丝点击