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

。_饼干妹妹 提交于 2019-12-03 13:39:48

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(代理)

定义: 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在代理方和目标对象之间起到中介的作用。

使用代理模式可以降低耦合度。大大的增强了代码的弹性。


留着查资料!!!


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!