您的位置:首页 > 移动开发 > Objective-C

objective-C程序设计学习笔记3--分类和协议

2016-07-02 17:17 507 查看
分类可以在不继承和改动原类的情况下为类提供扩展

格式如下:

声明部分

@interface 原类 (分类名)

扩展的方法

@end

实现部分

@implementation 原类 (分类名)

扩展的方法

@end

注意:分类中不能直接访问原类中@property定义的变量(因为其为原类私有的),不过可以通过[self 变量名]访问。

协议相当于C++中的抽象类(接口类),类如果声明遵循某协议则必须实现协议的方法

//定义Drawing协议

@protocol Drawing //协议开始

-(void)paint; //必须实现的方法

@optional

-(void)outline; //@optional后边的方法为可选实现的方法

@end //协议结束

//RectAngular类声明实现Drawing协议

@interface RectAngular : 父类 <Drawing>

//检查对象是否遵循某协议

[obj conformsToProtocal: @protocal (Drawing)] == YES

//告诉编译器obj对象将会是遵循Drawing协议的对象,如果赋值给obj的对象不遵循Drawing协议则会发出警告

id <Drawing> obj

//扩展Drawing协议

@protocal Drawing3D <Drawing>

//分类也可以遵循协议

@interface 类名 : 父类 <协议名>

代理

如果某类实现了协议的方法,某类则代理了协议的行为
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: