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

  • 相关阅读:
    JAVA基础——编程练习(二)
    JAVA基础——面向对象三大特性:封装、继承、多态
    JVM内存
    50. Pow(x, n) (JAVA)
    47. Permutations II (JAVA)
    46. Permutations (JAVA)
    45. Jump Game II (JAVA)
    43. Multiply Strings (JAVA)
    42. Trapping Rain Water (JAVA)
    41. First Missing Positive (JAVA)
  • 原文地址:https://www.cnblogs.com/ondream/p/4242276.html
Copyright © 2011-2022 走看看