转自:http://www.cnblogs.com/hxxy2003/archive/2011/10/24/2222838.html

@protocol是Objective-C中的接口定义方式,也就是说在一个类中通过@protocol定义接口,然后在另一个类中去实现这个接口,这也叫“代理”模式, 这种模式在ios开发中经常是会用到的。

“代理”模式的使用:

1.接口声明

#import <Foundation/Foundation.h>

//接口声明
@protocol ProtocolExampleDelegate <NSObject>
@required
-(void)successful:(BOOL)success; @end @interface ProtocolTest : NSObject{
//这个类包含该接口
id<ProtocolExampleDelegate> delegate; }
//接口变量delegate作为类ProtocolTest的属性
@property(nonatomic,retain)id delegate; //定义一个方法,使完成的时候回调接口
-(void)Complete; @end

2.接口回调

#import "ProtocolTest.h"

@implementation ProtocolTest

@synthesize delegate;

-(void)complete
{
//回调接口,successful()由使用者负责具体实现
[[self delegate]successful:YES];
} //通过定时器模拟在任务完成时调用接口回调函数
-(void)start
{
[NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(complete) userInfo:nil repeats:YES];
} @end

3.接口实现

#import <UIKit/UIKit.h>
#import "ProtocolTest.h" @class Test; @interface Test : NSObject<UIApplicationDelegate,ProtocolExampleDelegate>
{
UIWindow *window;
ProtocolTest *protocolTest;
} @property(nonatomic,retain)UIWindow *window; @end
#import "Test.h"
#import "ProtocolTest.h" @implementation Test @synthesize window;
//只实现一个方法
-(void)successful:(BOOL)success
{
NSLog(@"completed");
}

这个例子只是理解下@protocol.

Objective-C之@protocol的更多相关文章

  1. SAE/ISO standards for Automotive

    On-Board Diagnostics J1962 Diagnostic Connector Equivalent to ISO/DIS 15031-3: December 14, 2001J201 ...

  2. Automake

    Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...

  3. Objective中的协议(Protocol)

    Objective中的协议(Protocol) 作用: 专门用来声明一大堆方法. (不能声明属性,也不能实现方法,只能用来写方法的声明). 只要某个类遵守了这个协议.就相当于拥有这个协议中的所有的方法 ...

  4. Objective-C( protocol协议)

    protocol 协议 protocol:用来声明方法 1.协议的定义 @protocol 协议名称 <NSObject> // 方法声明列表.... @end 2.如何遵守协议 1> ...

  5. objective c, category 和 protocol 中添加property

    property的本质是实例变量 + getter 和 setter 方法 category和protocol可以添加方法 category 和 protocol中可以添加@property 关键字 ...

  6. objective c, protocol

    OC中协议类似于java中的接口,在多个类具有类似的方法时可以将这些方法定义到protocol中,然后各个类分别实现protocol中的各个方法. 例:有两个类Square和Circle, 定义一个p ...

  7. Objective C Protocol implementation

    protocol 类似于接口,可以实现函数的回调 @protocol MyDelegate<NSObject> -(void)myCallbackFunction; @end //Call ...

  8. The MESI Protocol

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION To provide cache cons ...

  9. CACHE COHERENCE AND THE MESI PROTOCOL

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION In contemporary multi ...

  10. Objective C运行时(runtime)

    #import <objc/runtime.h> void setBeingRemoved(id __self, SEL _cmd) { NSLog(@"------------ ...

随机推荐

  1. bash中的管道和重定向

    管道 管道命令操作符是:”|”,它仅能处理经由前面一个指令传出的正确输出信息,也就是 standard output 的信息,对于 stdandarderror 信息没有直接处理能力.然后,传递给下一 ...

  2. java nio最白话理解

    JAVA NIO是同步非阻塞io.同步和异步说的是消息的通知机制,阻塞非阻塞说的是线程的状态 .下面说说我的理解,client和服务器建立了socket连接:1.同步阻塞io:client在调用rea ...

  3. CFR Java Decompiler 反编译

    java反编译,JAD & CFR 目前我们开发中大都使用JAD进行java反编译.这个工具已经过于陈旧,最突出的问题就是经常反编译出错. 使用CFR反编译工具能够很好的解决这个问题,并且支持 ...

  4. vim的批量列编辑

    使用快捷键:control+v进入状态“VISUALBLOCK”,然后使用方向键向下选择,选择多行,向右选择,选择多列,使用快捷键d删除所选. 再次进入VISUAL BLOCK状态,选择多行多列, 使 ...

  5. java正則表達式 match、find匹配位置

    如题.对于java正則表達式这几个方法匹配一次后的,匹配位置搞不太清楚,就写了几个样例.例如以下: String ss="ooaaoo"; Pattern pt=Pattern.c ...

  6. 关于http协议session和cookie的理解

    http是无状态协议,不能够记录访问者的身份, 为了解决这一问题服务器端设置了session 浏览器端设置了cookie 这种机制 当浏览器第一次访问服务器的时候,服务器会判断是否有cookie的存在 ...

  7. 修改ASPCMS升级扩展功能

    修改 inc/aspcms_templateFun.asp 查找"content=decodeHtml(rsObj("Content"))" 替换为”conte ...

  8. ssh认证

    密钥认证 密码验证会造成账户口令的外泄,不安全,基于账号的保密性考虑,可以采用密钥验证实现远程连接. Linux--Linux 1.Linux客户端主机上生成密钥文件 ssh-keygen -t rs ...

  9. 常用HTML标签的全称及描述

    常用HTML标签的英文全称及简单描述   HTML标签 英文全称 中文释义 a Anchor 锚 abbr Abbreviation 缩写词 acronym Acronym 取首字母的缩写词 addr ...

  10. MediaWiki怎样重置用户password

    今天.弄mediawiki因为一个周末另一夜没有睡觉导致忘记password了(欢迎吐槽~) 就開始折腾之旅,本来以为能够直接执行一条sql语句就都搞定了结果...依照网上大多数讲述的 我已经找不到原 ...