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

定義: 爲其餘對象提供一種代理以控制對這個對象的訪問。在某些狀況下,一個對象不適合或者不能直接引用另外一個對象,而代理對象能夠在代理方和目標對象之間起到中介的做用。

使用代理模式能夠下降耦合度。大大的加強了代碼的彈性。


留着查資料!!!

相關文章
相關標籤/搜索