oc协议,延展,分类
来源:互联网 发布:vmware虚拟机网络桥接 编辑:程序博客网 时间:2024/05/21 06:47
1分类(类目,category),目的是为没有源代码的类添加方法(只能添加方法,不能添加实例变量)
是扩充一个类的功能的方式之一,为原有类扩充的方法会成为原类的一部分,使用即可
分类也分为.h(接口部分),以及.m(实现部分)
.h文件中填写方法的声明,.m文件中填写方法的实现
分类的定义格式,@interface开头 +扩展类的类名(分类名) @end结束
例子:
.h文件
@interface NSString (Compare)
-(void)sayHi;
//两个字符串对象比较
-(NSComparisonResult)compareAgainst:(NSString *)anString;
@end
2.延展:
延展也是扩充类的一种方式,只不过延展扩充的内容是私有的,是在.m文件中定义的,
延展既可以扩展方法,也可以扩展实例变量,只不过是私有的,外界无法直接访问
延展是为有源代码的类扩充内容(因为没有源代码是拿不到.m文件的)
@interface Person ()
{
NSString *_aa;
NSString *_bb;//延展中添加私有实例变量
}
-(void)sayMorning;
-(void)sayAfternoon;
-(void)sayEvening;
@end
3.协议
1.Protocol:就一个用途,用来声明一大堆的方法(不能声明成员变量),不能写实现
@protocol TeachingProtocol <NSObject>
@optional//选择,可选的,被他修饰的方法服从协议的类可以选择实现(可以实现也可以不实现)
-(void)TeachKVC;
@required(默认) //必须做的,服从协议的类必须实现该方法
-(void)teachMemory;
@end
@protocol WomanDelegate <NSObject>//marryProtocol <NSObject>
-(void)writeCode;//敲代码
-(void)cooking;//做饭
-(void)washClothes;//洗衣服
-(void)sweep;//扫地
协议就相当于一个任务清单,规定所要做的操作(只有一系列方法的声明),谁服从协议谁就要实现协议中的方法(完成任务清单中的任务)所以协议只有.h文件,没有.m文件(协议与文件没有关系,一个文件中可以有多个协议)
@interface 类名:父类名 <协议名称1,协议名称2>
@property (nonatomic, assign) id <WomanDelegate> delegate;//(代理的名字) //
-(void)clothesDirty
{
//让丈夫洗衣服
[self.delegatewashClothes];
}
让代理去执行方法washClothes
比如创建一个man类遵守womam的协议,在main函数中创建一个man对象赋给womam的属性delegate(先这么理解)
- oc协议,延展,分类
- OC-类目延展协议
- 分类 协议 延展 block
- 【OC笔记】分类和延展
- OC中类目,延展,协议
- OC 08 类目延展协议
- 黑马程序员——OC基础---分类(Category)、非正式协议及分类延展
- 黑马程序员——ios开发基础之OC中的分类、协议、延展和代理
- 黑马程序员 oc随机 分类与延展
- OC Category 分类 Extension 延展.md
- OC学习之延展和协议
- OC 类目category,延展extension,协议protocol
- OC学习总结之延展类目协议
- OC教程3-类目延展协议
- OC学习:协议、类目和延展
- OC学习 第十章 类目延展协议
- OC初期-07NSDate,类目,延展,协议
- OC学习心得之延展类目协议
- OGEngine
- [深入浅出Cocoa]iOS网络编程之Socket
- Java实现几种常见排序方法
- Robot Motion(水题)
- HDU3395 Special Fish 费用流
- oc协议,延展,分类
- setCompoundDrawables与setCompoundDrawablesWithIntrinsicBounds的区别
- oc 打僵尸 定义僵尸类
- [LeetCode] Edit Distance和Distance Subsequences
- linux shell 时间运算以及时间差计算方法
- java排序算法总结
- 学习Mysql点点滴滴
- poj 3264 Balanced Lineup
- cruiscontroller的理解和学习