1.类目
NSString+StringMethod.h文件
#import <Foundation/Foundation.h>
@interface NSString (StringMethod)
- (void)sayHi;
- (BOOL)isEqualTwoDate:(NSString *)otherDate;
- (NSString *)appendTwoDate:(NSString *)otherDate;
- (BOOL)isInTimeZone:(NSString *)beginTime end:(NSString *)endTime;
- (NSDate *)getDate;
+ (NSDate *)dateWithStr:(NSString *)dateString;
@end
NSString+StringMethod.m文件
#import "NSString+StringMethod.h"
@implementation NSString (StringMethod)
- (void)sayHi
{
NSLog(@"hello");
}
- (BOOL)isEqualTwoDate:(NSString *)otherDate
{
//self是调用这方法的对象
if ([[self substringWithRange:NSMakeRange(5, 2)] isEqualToString:[otherDate substringWithRange:NSMakeRange(5, 2)]]) {
return YES;
}
else
{
return NO;
}
return 0;
}
- (NSString *)appendTwoDate:(NSString *)otherDate
{
NSString *str = [otherDate substringFromIndex:11];
return [self stringByAppendingFormat:@"-%@",str];
}
- (BOOL)isInTimeZone:(NSString *)beginTime end:(NSString *)endTime
{
NSInteger begin = [[beginTime substringWithRange:NSMakeRange(8, 2)] integerValue];
NSInteger end = [[endTime substringWithRange:NSMakeRange(8, 2)] integerValue];
NSInteger time = [[self substringWithRange:NSMakeRange(8, 2)] integerValue];
if (time >= begin && time <= end) {
return YES;
}
else {
return NO;
}
return 0;
}
- (NSDate *)getDate
{
NSDateFormatter *fomatter = [[NSDateFormatter alloc] init];
[fomatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [fomatter dateFromString:self];
return date;
}
+ (NSDate *)dateWithStr:(NSString *)dateString
{
NSDate *date = [NSDate date];
date = [dateString getDate];
return date;
}
//下面这种没有在.h文件里面声明的方法叫私有方法,所以只能在.m文件里面使用,外界无法使用
- (void)heihei
{
NSLog(@"hehe");
}
@end
2.延展(Extension)
延展以@interface开头,然后写延展的类名,类名后加一个(),到@end结束
延展一般是针对自己的类进行操作,能够添加方法和属性,一般延展会写在自己的.m文件中,把一些不想让外部调用的属性(方法)放在延展里,这样属性只能在类的内部使用(私有属性和方法),私有方法也可放在@implementation和@end之间
Student.h文件
#import <Foundation/Foundation.h>
@interface Studnet : NSObject
@property(nonatomic,copy)NSString *stuSex;
- (void)sayHi;
@end
Student.m文件
#import "Studnet.h"
@interface Studnet ()
@property(nonatomic,copy)NSString *name;
-(void)eat;
@end
@implementation Studnet
- (void)create//利用延展的属性
{
_name = @"你好";
NSLog(@"%@",_name);
}
-(void)eat//延展方法
{
NSLog(@"吃饭去");
}
- (void)play//私有方法
{
NSLog(@"玩耍");
}
- (void)sayHi
{
[self eat];
[self play];
}
@end
3.协议代理
Girl.h和Girl.m文件
//1.声明一份协议@protocol
@protocol MarryDelegate <NSObject>
@required//必须实现(默认)-->可选择实现:@optional
- (void)makeMoney;//协议方法是声明
@end
@interface Girl : NSObject
@property(nonatomic,assign)id<MarryDelegate> delegate;//2.设置代理人的属性
- (void)getMarry;//两个人结婚之后,协议才是正式的生效
@end
#import "Girl.h"
@implementation Girl
- (void)getMarry
{
//3.让代理人去执行协议里的方法
[self.delegate makeMoney];
}
@end
Boy.h和Boy.m文件
#import <Foundation/Foundation.h>
#import "Girl.h"
@interface Boy : NSObject<Marry>//4.boy需要签订协议
@end
#import "Boy.h"
@implementation Boy
- (void)makeMoney//6.实现协议方法里面的方法
{
NSLog(@"挣钱去");
}
@end
main.m文件
Boy *liming = [[Boy alloc] init];
Girl *zhangyun = [[Girl alloc] init];
//5.设置代理人
zhangyun.delegate = liming;
//通过调用结婚的方法来执行内部的协议方法
[zhangyun getMarry];