第七讲.NSDate,category(分类),extension(延展),protocol(协议),delegate(代理)
时刻(含日期,时间,时区)。
a. 新建文件
b. 选择Objective-C Category模板
c. 填写类名和分类名
d. (.h)文件添加方法声明
e. (.m)文件添加方法实现
f. 需要使用的地方进行调用
4.caCategory的实现:
/// NSString+SayHi.h 文件
#import
@interface NSString (SayHi)
- (void)hi;
@end
// NSString+SayHi.m 文件
#import "NSString+SayHi.h"
@implementation NSString (SayHi)
#pragma mark 实现hi方法
- (void)hi
{
NSLog(@"这是通过category为NSString创建的hi方法");
}
@end
5.category与子类的区别
1.Extension的主要作用是为类添加‘私有’方法。
我们在设计一个类的时候,有些方法需要对外公开(我们称为接口),有些方法可能仅仅内部使用(比如,是某个方法的一个小步骤)
Extension的功能是帮我们去管理这些内部使用的方法(“私有”方法)
2.Extension特点:
a. Extension的语法格式和Category很相似
b.相当于把Category的.h文件挪到了原始类的.m文件中,同时,其实现也是在原始类的.m文件内完成
c. Extension针对的是自己的类,必须有源代码的类
定义Extension:在Person.m文件中添加Extension:
2.协议是一套标准(一堆方法的声明),只有(.h)文件
3.接受协议的对象实现协议中定义的方法
a. 协议就像一张任务清单(或便利贴),上面写了一堆需要处理的事。清单交给谁,谁就要去完成清单上规定的任务。
b. 协议定义好之后,需要有类去遵守这个协议,实现协议里面的方法
c. 遵守协议即在(.h)文件的父类名后写上<协议名>。实现协议里的方法即在(.m)文件中实现协议中的方法。相当于给这个类添加了脱岗额方法。这个类的实例就可以调用这些方法。
1.Protocol的核心使用场景是实现delegate设计模式
2.delegate音译代理。通俗的讲就是代理商,主要的任务是帮你完成了一些任务
比如:保姆就可以认为是delegate,主要的任务是帮你带孩子、做饭、洗衣服等
3.使用场景:
凡是某些任务自己不去实现,想让别人去实现的时候,就可以指定一个代理,让代理帮你去做。你只需要通知代理去做某些事。
4.代理使用方法:首先建立协议(只有.h文件声明一些方法)
然后让建立类的协议双方分别遵守协议
再次,让协议一方变成另一方的类中的的一个属性,这是建立代理的关键步骤
最后,让双方分别对协议方法进行相应的实现,再调用就可以完成代理事件了!
实例分析:建立一个保姆协议,包含带孩子,做饭等方法。
协议与代理的综合使用
nurseProtocol.h协议声明
mather.h文件 遵循协议,以及引入代理,将保姆代理作为自身的一个属性(代理的标志)此为引入代理的关键步骤
mather.m文件对协议的执行情况
nurse.h文件引入协议并遵循字协议
nurse.m执行协议相关方法
main.m文件调用