关于 object-c的@protocol的理解_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 关于 object-c的@protocol的理解

关于 object-c的@protocol的理解

 2015/1/22 18:10:47  梁DH  程序员俱乐部  我要评论(0)
  • 摘要:从java角度来理解@protocol相当于java的接口定义,用法也一样下面是试验例子@protocolmytestClass<NSObject>-(void)callback:(int)num;@end@interfaceDiscoveryController:UIViewController<mytestClass>{UIImageView*imageView;}-(UIImage*)getImageFromURL:(NSString*)fileURL
  • 标签:理解

从java角度来理解 

class="p1">@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

发表评论
用户名: 匿名