从java角度来理解 java
@protocol 至关于 java 的接口定义,用法也同样异步
下面是试验例子atom
@protocol mytestClass <NSObject> - (void) callback:(int) num; @end @interface DiscoveryController : UIViewController<mytestClass>{ UIImageView *imageView; } -(UIImage *) getImageFromURL:(NSString *)fileURL; @end
在这里定义了protocol并由类spa
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
这里经过线程进行异步回调会让程序更加直观。.net
MyCallBack *vv = [[MyCallBack alloc] init]; vv.deleage = self; [vv setRun];
须要用到protocol的地方实现这个protocol并传送指针;线程