zoukankan      html  css  js  c++  java
  • Objective-C之@protocol

    转自: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.

  • 相关阅读:
    JavaScript之DOM总结
    图书馆管理系统——模板建立
    JavaScript阶段总结(二)
    JavaScript阶段总结(一)
    机房重构反思之视图
    web服务代理
    若要在加载设计器前避免可能发生的数据丢失,必须纠正以下错误
    ”/”应用程序中的服务器错误
    无法显示您正在查找的页面,因为使用了无效的方法(http谓词)。
    hibernate树
  • 原文地址:https://www.cnblogs.com/wangpei/p/3535846.html
Copyright © 2011-2022 走看看