关于object-c的@protocol的理解

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

从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

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航