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

protocol(协议)ui

与建立类同样,右击鼠标,选New File,选Objective-C,选protocol(切记!!!),而后写协议名,就能够了。
spa


1.Protocol:就一个用途,用来声明一大堆的方法(不能声明成员变量),不能写实现。代理

2.只要某个类遵照了这个协议,就拥有了这个协议中的全部方法声明。code

3.只要父类遵照了某个协议,那么子类也遵照。orm

4.Protocol声明的方法可让任何类去实现,protocol就是协议。对象

5.OC不能继承多个类(单继承)可是可以遵照多个协议。继承(:),遵照协议(< >继承

6.基协议:<NSObject>是基协议,是最根本最基本的协议,其中声明了不少最基本的方法。it

7.协议能够遵照协议,一个协议遵照了另外一个协议,就能够拥有另外一份协议中的方法声明。io


在这里咱们建立了一个协议renshengclass

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

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

使用代理模式能够下降耦合度。大大的加强了代码的弹性。


留着查资料!!!

相关文章
相关标签/搜索