Objective-C利用协议实现回调函数
实现一个显示文字为测试的视图,然后经过3秒钟测试文字变为回调函数文字。相应的截图如下:
实现的代码如下:
定义协议:
#import <UIKit/UIKit.h>
@protocol NoteDelegate
//回调函数
-(void)messageCallBack:(NSString *)string;
@end
调用协议:
#import <Foundation/Foundation.h>
#import "NoteDelegate.h"
@interface ManagerMessage : NSObject {
id<NoteDelegate> *noteDelegate;
}
@property (nonatomic,retain) id<NoteDelegate> *noteDelegate;
-(void)startThread;
@end#import "ManagerMessage.h"
@implementation ManagerMessage
@synthesize noteDelegate;
//开始一个线程
-(void)startThread
{[NSTimer scheduledTimerWithTimeInterval:3
target:self
selector:@selector(targetMethod:)
userInfo:nil
repeats:NO];
}
-(void)targetMethod:(NSString *)string
{
if (self.noteDelegate!=nil) {
//完成线程 调用回调函数
[self.noteDelegate messageCallBack:@"回调函数"];
}
}
@end
前台页面实现:
#import "IphoneDeleteViewController.h"
#import "ManagerMessage.h"
@implementation IphoneDeleteViewController
@synthesize textView;//回调函数
-(void)messageCallBack:(NSString *)string
{
self.textView.text=string;
}- (void)viewDidLoad {
[super viewDidLoad];
self.textView.text=@"测试";
ManagerMessage *message=[[ManagerMessage alloc] init];
//通知调用协议
message.noteDelegate=self;
[message startThread];
[message release];
}- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}- (void)viewDidUnload {
self.textView=nil;
}- (void)dealloc {
[self.textView release];
[super dealloc];
}@end