OC中协议、代理

Boss类的声明文件

#import <Foundation/Foundation.h>

@protocol BossDelegate

-(void)bookTicket;//预定机票

-(void)bookRoom;//预定房间

-(void)notify;//开会

@end

@interface Boss : NSObject

@property(nonatomic,weak)id<BossDelegate>delegate;

-(void)travel;//旅行

-(void)metting;//开会

@end

Boss类的实现文件:

#import "Boss.h"

@implementation Boss

-(void)travel

{

//1.订机票

[_delegate bookTicket];

//2.订房间

[_delegate bookRoom];

//3.去旅行

NSLog(@"boss travel.");

}

-(void)metting

{

//1.通知开会

[_delegate notify];

//2.老板讲话

NSLog(@"boss speak:hello!everybody.");

}

@end

员工的声明文件:

#import <Foundation/Foundation.h>

#import "Boss.h"

@interface Person : NSObject<BossDelegate>

@end

员工的实现文件:

#import "Person.h"

@implementation Person

-(void)bookTicket{

NSLog(@"person bookTicket.");

}

-(void)bookRoom

{

NSLog(@"person bookRoom.");

}

-(void)notify

{

NSLog(@"person metting.");

}

@end

//测试文件

#import <Foundation/Foundation.h>

#import "Boss.h"

#import "Person.h"

#import "Student.h"

int main(int argc, const char * argv[]) {

@autoreleasepool {

Boss *boss = [Boss new];

Person *person = [Person new];

[boss setDelegate:person];

[boss travel];

[boss metting];

   //现在老板计划招一名学生当助理,有助理来完成以上工作

 Student *stu = [Student new];

[boss setDelegate:stu];

[boss travel];

[boss metting];

}

return 0;

}

时间: 2024-10-31 19:38:41

OC中协议、代理的相关文章

OC中的代理模式

OC中的代理模式,关于代理模式,如果还有同学不太清楚的话,就自己去补充知识了,这里就不做介绍了,这里只介绍OC中是如何实现代理模式的.这里举一个简单的例子:小孩类,护士类,保姆类,其中小孩类有两个方法:wash和play这里代理对象就是:护士类.保姆类,小孩类是被代理对象.看一下代码:首先看一下小孩类:Children.h[objc]  view plaincopy 1. //   2. //  Children.h   3. //  12_DesignStyle   4. //   5. //

OC中协议, 类目, 时间, 延展, 属性

必须接受marryprotocol协议, id<marryprotocol>基于类型的限定, 才能给实例变量赋值 @property (nonatomic, assign) id<marryprotocol> husband; 避免Optitonal没有实现的功能 if ([_husband respondsToSelector:@selector(driver)]) { [_husband driver]; } @required//必须实现的协议, 默认协议 - (void)s

OC中协议的概念以及用法

OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Java中的接口(抽象类),只不过OC中的名字更形象点,因为我们在学习Java中的接口时候,看可以知道其实接口就相当于一种契约(协议),给他的实现类打上标记了,当然这个活在Java5.0之后,被注解替代了,因为注解就是为了此功能诞生的.协议就是定义了一组方法,然后让其他类去实现 下面来看代码:WithProtocol.h[objc]  view plaincopy 

黑马程序员------OC中协议和分类

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- OC中没有想C++中的多继承,是利用分类和协议来实现的. 分类是在不影响原有存在类的基础上,为原有类添加属性和方法. 协议:一般只是声明方法.遵守了协议的类,才会去实现协议中的方法. 协议一般和代理的一起使用.分类,一般是为系统中的类添加

OC中协议Protocol的小结

//协议的基础语法 //遵从协议的类,可以声明出遵从协议的对象 Dog * dog = [[Dog alloc] init]; //普通id指针能指向任何对象,带协议的id只能指向遵从协议的类的对象 //Dog类遵从了MyProtocol协议,实现了协议中的方法 id <MyProtocol> obj = dog; //obj可以使用协议中定义的方法bark [obj bark]; // // main.m // 协议1-基础语法 // // Created by Macro on 14-12

介绍 - OC中的代理模式

一,代理设计模式的场合: 当对象A发生了一些行为,想告知对象B (让对象B成为对象A的代理对象) 对象B想监听对象A的一些行为 (让对象B成为对象A的代理对象) 当对象A无法处理某些行为的时候,想让对象B帮忙处理 (让对象B成为对象 A的代理对象) 二,对象之间的传值 使用代理的步骤:  首先要明确谁请别人代理, 谁当别人的代理 请代理三部曲: 1> 写一个协议, 把自己不方便(或者自己不想)做的事情列出来(@protocol StudentDelegate <NSObject>) 2&

Objective-C中的委托(代理)模式

我个人更喜欢把委托(Delegate)模式称为代理(Proxy)模式.还是那句话,第一次接触代理模式是在Java中接触的,在Java中实现代理模式和接口是少不了的.当时学习Spring的时候用到了接口回调,其实就是实现的委托代理模式.简单的说代理就是把相应的功能交给实现接口的相应的类中来解决.在OC中没有接口该如何实现代理呢?前面的博客中笔者说提了一句,在OC中的协议和Java中的接口极为相似,都是只声明方法而不去实现,方法的实现在OC中交个遵循协议的类,而在Java中方法的实现交给实现接口的类

OC语言--协议

1.协议的介绍 1.1什么是协议 协议就是需要相互遵守的约定.规范.比如卖身协议,我们负责给Boss写代码,调bug,发布,Boss负责给我们发薪水,保险,福利:比如Http协议,两台计算机,遵守相同的约定,可以相互通讯.就像我们彼此交流,都遵守说中文这个约定或规范. 2. OC中协议 2.1OC协议概念 OC或IOS中的协议,就是一组方法(成员函数)的声明列表:声明方不需要实现这些方法,由遵守协议的对象来实现协议所规定的方法.(制定法律规范,让别人遵守). 2.2OC协议的使用步骤 制定协议

黑马程序员_ 利用oc的协议实现代理模式

先说下代理模式是什么吧 定义: 为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象 而代理对象可以在客户端和目标对象之间起到中介的作用. 在看过李明杰老师的课程后,我对代理模式有了最初步的理解,虽然还很浅显 但是也明白了代理模式的 一些作用跟用法.首先使用代理模式可以降低耦合度.大大的增强了代码的弹性. 举个例子,小明想看电影,但是没时间买票 于是就拜托小强去买票 最简单的方式就是 建立一个person类(小明) 一个agent类(代理类) ag