zoukankan      html  css  js  c++  java
  • ObjectiveC利用协议实现回调函数

    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

    实现一个显示文字为测试的视图,然后经过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

  • 相关阅读:
    vi 命令
    element-ui + el-dialog + Vue.component 注册的tinymce富文本控件 第二次及以后打开dialog出现问题解决方法
    【经典数据结构】哈希表
    TCP建立连接与释放连接过程中的几个问题
    【算法题目】求二叉树中节点的最大距离
    字符串处理函数
    [LeetCode] Balanced Binary Tree
    [LeetCode] N-Queens II
    [LeetCode] N-Queens
    【linux使用】bash shell命令行常用快捷键
  • 原文地址:https://www.cnblogs.com/moonvan/p/2228634.html
Copyright © 2011-2022 走看看