Objective-C利用协议实现回调函数

实现一个显示文字为测试的视图,然后经过3秒钟测试文字变为回调函数文字。相应的截图如下:

 

image image

实现的代码如下:

定义协议:

#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

posted @ 2010-10-20 18:35  周宏伟  阅读(1921)  评论(0编辑  收藏  举报