zoukankan      html  css  js  c++  java
  • 关于 object-c的@protocol的理解

    从java角度来理解 

    @protocol 相当于 java 的接口定义,用法也一样

     

    下面是试验例子

     

    @protocol mytestClass <NSObject>
    
    - (void) callback:(int) num;
    
    @end
    
    @interface DiscoveryController : UIViewController<mytestClass>{
        UIImageView *imageView;
        
    }
    -(UIImage *) getImageFromURL:(NSString *)fileURL;
    
    @end
    

      在这里定义了protocol并由类

    DiscoveryController实现此接口

    @interface MyCallBack : NSObject
    {
        id<mytestClass> deleage;
    }
    @property(nonatomic,retain) id<mytestClass> deleage;
    - (void)setRun;
    @end
    

      

    MyCallBack中保存从其它类传过来的
    deleage当需要时进行回调。

    //
    //  MyCallBack.m
    //  ACMobile
    //
    //  Created by mr.liang on 15/1/22.
    //  Copyright (c) 2015年 mr.liang. All rights reserved.
    //
    
    #import "MyCallBack.h"
    
    @implementation MyCallBack
    @synthesize deleage;
    
    - (void) runThread
    {
        NSLog(@"我在运行");
        [NSThread sleepForTimeInterval:2];
        [deleage callback:1];
    }
    
    - (void)setRun
    {
        NSThread *callbackthread = [[NSThread alloc] initWithTarget:self selector:@selector(runThread) object:nil];
        [callbackthread start];
    }
    @end
    

      这里通过线程进行异步回调会让程序更加直观。

        MyCallBack *vv = [[MyCallBack alloc] init];
        vv.deleage = self;
        [vv setRun];
    

      需要用到protocol的地方实现这个protocol并传送指针;

    互联网的一点事 www.yidin.net

  • 相关阅读:
    堆排序
    伽马分布
    隔壁-贪心
    对刚—约瑟夫环
    站军姿-两圆并集
    单纯的线性筛素数
    3兔子
    2.圆桌游戏
    1.花
    历史
  • 原文地址:https://www.cnblogs.com/ondream/p/4242276.html
Copyright © 2011-2022 走看看