黑马程序员---IOS protocol

来源:互联网 发布:被淘宝举报盗图怎么办 编辑:程序博客网 时间:2024/06/10 09:28

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


一.概述

  协议(protocol):规定的一组方法方法的声明,当你必需完成一个或几个特定的任务时候就该用到协议了。

  委托(delegate):就是把这几个特定的任务交付给这个对象完成。

  有一个老板(BOSS)需要聘请清洁员(Cleaner),这个清洁员需要完成扫地(cleanFloor),倒垃圾  (takeOutTrash)等任务(Task)。

  清洁员这个就属于委托对象了,而清洁员需要完成的这些个扫地,倒垃圾等任务就属于协议。

二.协议和委托的声明

 1. 使用可视化界面创建一个协议:

 2. 编写协议的内容:

 3. 实现委托

     3.1 委托可以实现多个协议

    

     3.2 委托实现协议要做的事情

     


 4. 管理者使用委托

 5. main函数

源代码如下:

////  Task.h//  protocol////  Created by AndyJerry on 14-12-19.//  Copyright (c) 2014年 AndyJerry. All rights reserved.//#import <Foundation/Foundation.h>//协议的声明@protocol Task <NSObject>//必须要实现的方法用@required声明@required-(void) cleanFloor;-(void) takeOutTrash;//可以不实现的方法用optional声明@optional-(void) cook;@end#import <Foundation/Foundation.h>@protocol Task;//@protocol Task2;@interface Cleaner : NSObject<Task>//实现多个协议//@interface Cleaner : NSObject<Task, Task2>@end//也可以在一个类中定义协议,不过建议写在一个单独的头文件中@protocol Task2 <NSObject>-(void)rest;@end//委托#import "Cleaner.h"#import "Task.h"@implementation Cleaner//实现必须完成的任务 实现协议-(void)cleanFloor {    NSLog(@"Boss, I'm cleaning");}-(void)takeOutTrash {    NSLog(@"Boss, I'm taking out trash");}@end#import <Foundation/Foundation.h>@class Cleaner;@protocol Task;@interface Boss : NSObject//@property中声明的属性也可用做一个遵守协议的限制@property (retain, nonatomic) Cleaner<Task> *cleaner;@end#import "Boss.h"#import "Cleaner.h"#import "Task.h"@implementation Boss@end#import <Foundation/Foundation.h>#import "Task.h"#import "Cleaner.h"#import "Boss.h"int main(int argc, const char * argv[]){    @autoreleasepool {        Cleaner *cleaner = [[[Cleaner alloc] init] autorelease];                Boss *boss = [[Boss alloc] init];                boss.cleaner = cleaner;                [cleaner release];                [boss.cleaner cleanFloor];                [boss.cleaner takeOutTrash];                [boss release];    }    return 0;}


 


 


0 0
原创粉丝点击