//
// ProtectedDelegate.h
// OC8_代理基本概念
//
// Created by zhangxueming on 15/6/24.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h> @protocol ProtectedDelegate <NSObject> - (void)bark; @end //
// Person.h
// OC8_代理基本概念
//
// Created by zhangxueming on 15/6/24.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h>
#import "ProtectedDelegate.h" @interface Person : NSObject
{
id <ProtectedDelegate>_delegate;
}//对象指针也要遵守协议 @property (retain, nonatomic)id <ProtectedDelegate>delegate; - (void)go; @end //
// Person.m
// OC8_代理基本概念
//
// Created by zhangxueming on 15/6/24.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import "Person.h" @implementation Person - (void)go
{
[_delegate bark];
} @end //
// Cat.h
// OC8_代理基本概念
//
// Created by zhangxueming on 15/6/24.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h>
#import "ProtectedDelegate.h"//包含头文件 @interface Cat : NSObject <ProtectedDelegate>//遵守这个协议 @end //
// Cat.m
// OC8_代理基本概念
//
// Created by zhangxueming on 15/6/24.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import "Cat.h" @implementation Cat
- (void)bark
{
NSLog(@"Miao miao miao ...");
}
@end //
// Dog.h
// OC8_代理基本概念
//
// Created by zhangxueming on 15/6/24.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h>
#import "ProtectedDelegate.h" @interface Dog : NSObject <ProtectedDelegate> @end //
// Dog.m
// OC8_代理基本概念
//
// Created by zhangxueming on 15/6/24.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import "Dog.h" @implementation Dog - (void)bark
{
NSLog(@"Wang wang wang ...");
} @end //
// main.m
// OC8_代理基本概念
//
// Created by zhangxueming on 15/6/24.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h>
#import "Dog.h"
#import "Cat.h"
#import "Person.h" int main(int argc, const char * argv[]) {
@autoreleasepool {
Person *xiaoXin = [[Person alloc] init];
Dog *dog = [[Dog alloc] init];
xiaoXin.delegate = dog;
[xiaoXin go];
Cat *cat = [[Cat alloc] init];
xiaoXin.delegate = cat;
[xiaoXin go];
}
return ;
}

OC8_代理基本概念的更多相关文章

  1. java 代理的概念与作用

    1.引入: 为已存在的多个具有相同接口的目标类的各个方法增加一些系统功能,例如,异常处理.日志.计算方法的运行时间.事务管理.等等,你准备如何做? 编写一个与目标类具有相同接口的代理类,代理类的每个方 ...

  2. java代理概念

    代理的概念 动态代理技术是整个java技术中最重要的一个技术,它是学习java框架的基础,不会动态代理技术,那么在学习Spring这些框架时是学不明白的. 动态代理技术就是用来产生一个对象的代理对象的 ...

  3. JDK动态代理

    一.基本概念 1.什么是代理? 在阐述JDK动态代理之前,我们很有必要先来弄明白代理的概念.代理这个词本身并不是计算机专用术语,它是生活中一个常用的概念.这里引用维基百科上的一句话对代理进行定义: A ...

  4. Nginx反向代理部署指南

    一.反向代理 我们都知道,80端口是web服务的默认端口,其他主机访问web服务器也是默认和80端口进行web交互,而一台服务器也只有一个80端口,这是约定俗成的标准. 我们来看下面两个场景: 1.服 ...

  5. Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

    转载:http://freeloda.blog.51cto.com/2033581/1288553 大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负 ...

  6. Java基础知识:代理

    一.代理的概念 动态代理技术是整个java技术中最重要的一个技术,它是学习java框架的基础,不会动态代理技术,那么在学习Spring这些框架时是学不明白的. 动态代理技术就是用来产生一个对象的代理对 ...

  7. Java设计模式9:代理模式

    代理模式 代理模式的定义很简单:给某一对象提供一个代理对象,并由代理对象控制对原对象的引用. 代理模式的结构 有些情况下,一个客户不想活着不能够直接引用一个对象,可以通过代理对象在客户端和目标对象之间 ...

  8. Nginx反向代理、负载均衡、页面缓存、URL重写及读写分离详解

    大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...

  9. Java核心技术点之动态代理

    本篇博文会从代理的概念出发,介绍Java中动态代理技术的使用,并进一步探索它的实现原理.由于个人水平有限,叙述中难免出现不清晰或是不准确的地方,希望大家可以指正,谢谢大家:) 一.概述 1. 什么是代 ...

随机推荐

  1. RotateAnimation详解

    其他构造器的旋转也可参考这副图. RotateAnimation旋转坐标系为以旋转点为坐标系(0,0)点.x轴为0度,顺时针方向旋转一定的角度.        1.RotateAnimation(fr ...

  2. iOS开发——UI篇Swift篇&玩转UItableView(三)分组功能

    UItableView分组功能 class UITableViewControllerGroup: UIViewController, UITableViewDataSource, UITableVi ...

  3. WCF和WPF读取xml的路径问题

    使用WCF编写服务,涉及到xml的读取,使用了System.AppDomain.CurrentDomain.BaseDirectory来获取路径,获得的是项目的基目录 例如: string path ...

  4. CF 335A(Banana-贪心-priority_queue是大根堆)

    A. Banana time limit per test 2 seconds memory limit per test 256 megabytes input standard input out ...

  5. Diagram of Spring 3.0 module dependencies--转载

    原文地址:http://www.ogrigas.eu/spring/2009/12/diagram-of-spring-3-0-module-dependencies As Spring 3.0.0. ...

  6. 用vim处理字符的大小写转换

    转载: http://blog.csdn.net/ruixj/article/details/3765385 http://www.linuxsong.org/2010/09/vim-convert- ...

  7. SQL VS NoSQL 如何选择数据库

    在前一篇文章中我们主要的讨论了SQL与NoSQL数据库之间的主要的差别.接下来,我们将会利用上一篇中的知识来确定在特定的场景中如何确定比较好的选择. 首先我们先来总结一下: SQL数据库: ​使用表存 ...

  8. what is docker

    尽管之前久闻Docker的大名了,但是天资愚钝,对其到底是个啥东西一直摸不清,最近花了一段时间整理了一下,算是整理出一点头绪来. 官网的介绍是这样的: Docker is an open platfo ...

  9. Json.Net学习.集合序列化.

    只要集合实现了IEnumable接口就可以进行序列化 Json序列化器为序列化及反序列化集合对象提供了良好的支持. ->Serializing 为了序列化一个集合---一个泛型的list,arr ...

  10. hadoop环境安装及简单Map-Reduce示例

    说明:这篇博客来自我的csdn博客,http://blog.csdn.net/lxxgreat/article/details/7753511 一.参考书:<hadoop权威指南--第二版(中文 ...