协议Protocol使用

1.协议定义

通常,一个协议的定义放在头文件中,其语法形式如下:

@protocol 协议名

方法声明;

@end

一般在方法声明前面会有两个关键字进行修饰:

@optional,它表示声明的方法是可选的,

@required,它表示声明的方法是必选的,

加上关键字的协议定义如下:

@protocol 协议名

@optional

方法声明1;

方法声明2;

@required

方法声明3;

方法声明4;

@end

注意:一般方法前面没有关键字修饰的,默认为@required.

2.协议在类中的声明

协议定义好后,要在类中进行使用。首先要在类中进行协议的声明,其语法形式如下:

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

@end

3.实现

  协议声明好后,要在类的实现文件中实现协议中声明的方法,其语法形式如下:

  @implementation 类名

    协议方法名 {

      代码段;

    }

  @end

 

示例代码:

MyProtocol协议头文件: 

#import <Foundation/Foundation.h>
@protocol MyProtocol <NSObject>
-(void) go;
@end

  Aaa类头文件:

#import <Foundation/Foundation.h>
#import "MyProtocol.h"

@interface Aaa : NSObject<MyProtocol>
@end

  Aaa类实现文件:

#import "Aaa.h"
@implementation Aaa
-(void)go{
    NSLog(@"GO");
}
@end

  Main函数文件:

#import <Foundation/Foundation.h>
#import "Aaa.h"
int main(int argc, const char * argv[])
{
    @autoreleasepool {
        Aaa *aa = [[Aaa alloc]init];
        [aa go];
    }
    return 0;
}

   执行结果如下:

 

  注意:在此程序中,用到了协议继承,即协议2使用了协议1,其语法形式如下:

  @protocol 协议名2<协议名1>

    方法声明;

  @end

  在Object-C中,创建的协议都默认继承自NSObject协议,其语法形式如下:

  @protocol 协议名<NSObject>

    方法声明;

  @end

  协议可以多继承,即继承多个协议,其语法形式如下:

  @protocol 协议名<协议名1,协议名2,协议名3>

  @end;

  类使用协议时,也可以同时使用多个协议,其语法形式如下:

  @interface 类名:父类名<协议名1,协议名2,协议名3>

  @end

转载于:https://www.cnblogs.com/wlxm/p/4291929.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值