黑马程序员——protocol的基本使用和代理设计模式

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1、protocol的用途

    1)用来声明方法不能声明成员变量

    2)遵守这个协议的类,相当于拥有这个协议中所有的方法声明

    3)子类能够继承父类遵守的协议


2、protocol的书写格式 和 遵守protocol的类的书写格式

协议书写格式:
 @protocol 协议名称 <NSObject>
  // 方法声明列表....
 @end
注意:<NSObject> 为本协议遵守的协议,也可以换成其它协议。一个协议遵守另外的协议,就相当于拥有了那个协议的所有方法的声明。<NSObject>是任何协议都要继承(或间接继承)的协议被称为基协议

遵守协议的书写格式:
 @interface ClassName : FatherClass <protocol1, protocol2>
 
 @end

3、协议中声明方法类型的两种关键字

@required //  默认,要求实现,如果没有实现,会发出警告(只是警告,不会报错)
 
@optional //  不要求实现,是否实现都不会有警告


4、限制生成的对象变量 / 声明类中的成员对象  遵守某个协议

        a)声明类中的成员对象遵守协议
 //  @property (nonatomic, strong) 类名<协议名称> *属性名;
 @property (nonatomic, strong) Dog<MyProtocol> *dog;
 
 //  @property (nonatomic, strong) id<协议名称> 属性名;
 @property (nonatomic, strong) id<MyProtocol> dog2;

        b)限制生成的对象变量遵守协议
// 类名<协议名称> *变量名;
NSObject<MyProtocol> *obj;
 
// id<协议名称> 变量名;
id<MyProtocol> obj2;

5、代理设计模式

设计了一个最小化“代理模式”例程:
//
//  Helpprotocol.h
//

#import <Foundation/Foundation.h>

@protocol Helpprotocol <NSObject>

- (void)paotui;

@end

//
//  Man.h
//

#import <Foundation/Foundation.h>
#import “Helpprotocol.h"

@interface Man : NSObject

- (void)jiaorenpaotui;

@property (nonatomic, strong) id<Helpprotocol> somehelper;

@end

//
//  Man.m
//
#import "Man.h"

@implementation Man

- (void)jiaorenpaotui
{
    [_somehelper paotui];
}

@end

//
//  Helper.h
//

#import <Foundation/Foundation.h>
#import “Helpprotocol.h"

@interface Helper : NSObject <Helpprotocol>

@end

//
//  Helper.m
//

#import “Helper.h"

@implementation Helper

- (void)paotui
{
    NSLog(@"pao tui wan cheng!");
}

@end

//
//  main.m
//

#import <Foundation/Foundation.h>
#import "Man.h"
#import “Helper.h"

int main()
{
    Man *man1 = [[Man alloc] init];
    Helper *helper1 = [[Helper alloc]init];
   
    man1.somehelper = helper1;
    [man1 jiaorenpaotui];
   
    return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值