类目 Category Extension 协议 Protocol

来源:互联网 发布:java线程并发实例 编辑:程序博客网 时间:2024/06/05 23:43
扩展:
1.子类  subclass
2.分类 Category
3.Extension
4.Protocol

Category
Category 也叫类名或类目
只要作用:
没有源代码 的类加方法,但是不可以加实例变量   扩展系统 第三方
通过 Category 添加的方法会成为原类的一部分,从而达到扩展一个类的功能

如何添加 Category 的方法:
1.新建文件
2.选择Objective-C Category 模板
3.填写类名和分类名
4. .h 文件添加方法声明
5. .m 文件添加方法实现

例如:添加 NSString 的方法
声明:
NSString+sayHi.h 文件
@interface NSString(sayHi)
     - (void)sayHi;
@end

实现:
NSString+SayHi.m 文件
#import NSString+SayHi.h

@implementation NSString(SayHi)
 - (void)sayHi
{

         NSLog(@这是通过categoryNSString添加的hi方法);

 
}

@end



Extension

Extension 的主要作用是:为类添加一个”私有”方法  和 “私有”变量
Extension 针对的是自己的类,必须有源代码的类
它只在. m 文件中实现

定义:
xxx.m 文件
//括号里什么都不写 可以加私有变量 但是要是在里面写东西的话就是不能添加私有变量
@interface xxx (ExtensionName) 

//你的方法列表

@end

实现:

@implementation xxx 
//方法实现
@end



Protocol
protocol 又名协议
协议是一套标准(一堆方法的声明),只有 .h文件
接受协议的对象实现协议定义的方法


协议中的方法是默认的是必须要实现的,即@required (这个关键字可以不写)
关键字@optional 修饰的方法是可选的,可实现也可不实现

以@protocol 开始,以@end结束


总结它的用法和用途:
协议的 .h 文件中只有声明,实现要在谁要遵守这个协议的类的 .m 文件中写实现方法, .h 文件中要先引入这个协议
例如:
在类的 .m 文件中


如果有个类是定协议的一方,其他类要遵守这个字协议,
那么这个类中也要创建一个实例变量---是一个满足我协议对象就能成为这个类的一部分.,而且还要写一个实现方法,以便在main 函数中调用满足我协议的对象.
这个类的 .h 文件也要引用这个协议但不要遵守

例子:



0 0
原创粉丝点击