您的位置:首页 > 其它

oc中的protocol(协议)与delegate(代理)

2016-04-05 00:00 399 查看
protocol(协议)

与创建类一样,右击鼠标,选New File,选Objective-C,选protocol(切记!!!),然后写协议名,就可以了。

1.Protocol:就一个用途,用来声明一大堆的方法(不能声明成员变量),不能写实现。
2.只要某个类遵守了这个协议,就拥有了这个协议中的所有方法声明。
3.只要父类遵守了某个协议,那么子类也遵守。
4.Protocol声明的方法可以让任何类去实现,protocol就是协议。
5.OC不能继承多个类(单继承)但是能够遵守多个协议。继承(:),遵守协议(< >)
6.基协议:<NSObject>是基协议,是最根本最基本的协议,其中声明了很多最基本的方法。
7.协议可以遵守协议,一个协议遵守了另一个协议,就可以拥有另一份协议中的方法声明。

在这里我们创建了一个协议rensheng

#import <Foundation/Foundation.h>

@protocol rensheng <NSObject>

//可选的
@optional
-(void)TVing:(id)xiaoming;

//必须实现的
@required
-(void)eating:(id)xiaoming;

@end

然后我们在people类.h文件里面引用它

#import <Foundation/Foundation.h>
//引用rensheng的.h头文件
#import "rensheng.h"

//NSObject后面要加<>,里面是协议名
@interface people : NSObject<rensheng>

@end

接着我们在people类.m文件里面实现它

#import "people.h"

@implementation people

//@optional类型的是可选的,我们并不一定要实现它
-(void)TVing:(id)xiaoming{
NSLog(@"小明不一定需要看电视");
}

//@required类型是必须实现的,我们一定要实现它
-(void)eating:(id)xiaoming{
NSLog(@"小明一定要吃饭");
}

@end


delegate(代理)

定义: 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在代理方和目标对象之间起到中介的作用。
使用代理模式可以降低耦合度。大大的增强了代码的弹性。

留着查资料!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: