Warning: Undefined array key "custom_message" in /www/wwwroot/bbs.aaronyang.cc/wp-content/plugins/wpcopyrights/index.php on line 105

ios-委托(Delegates)

委托(Delegates)示例

假设对象A调用B来执行一项操作,操作一旦完成,对象A就必须知道对象B已完成任务且对象A将执行其他必要操作。

在上面的示例中的关键概念有

  • A是B的委托对象

  • B引用一个A

  • A将实现B的委托方法

  • B通过委托方法通知

创建一个委托(Delegates)对象

  1. 创建一个单一视图的应用程序

  2. 然后选择文件 File -> New -> File…

file

  1. 然后选择Objective C单击下一步

  2. 将SampleProtocol的子类命名为NSObject,如下所示

file

  1. 然后选择创建

6.向SampleProtocol.h文件夹中添加一种协议,然后更新代码,如下所示:

#import <Foundation/Foundation.h>
// 协议定义
@protocol SampleProtocolDelegate <NSObject>
@required
- (void) processCompleted;
@end
// 协议定义结束
@interface SampleProtocol : NSObject

{
   // Delegate to respond back
   id <SampleProtocolDelegate> _delegate; 

}
@property (nonatomic,strong) id delegate;

-(void)startSampleProcess; // Instance method

@end

7.修改 SampleProtocol.m 文件代码,实现实例方法:

#import "SampleProtocol.h"

@implementation SampleProtocol

-(void)startSampleProcess{

    [NSTimer scheduledTimerWithTimeInterval:3.0 target:self.delegate 
    selector:@selector(processCompleted) userInfo:nil repeats:NO];
}
@end
  1. 将标签从对象库拖到UIView,从而在ViewController.xib中添加UILabel,如下所示:

file

  1. 创建一个IBOutlet标签并命名为myLabel,然后按如下所示更新代码并在ViewController.h里显示SampleProtocolDelegate
#import <UIKit/UIKit.h>
#import "SampleProtocol.h"

@interface ViewController : UIViewController<SampleProtocolDelegate>
{
    IBOutlet UILabel *myLabel;
}
@end
  1. 完成授权方法,为SampleProtocol创建对象和调用startSampleProcess方法。如下所示,更新ViewController.m文件
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    SampleProtocol *sampleProtocol = [[SampleProtocol alloc]init];
    sampleProtocol.delegate = self;
    [myLabel setText:@"Processing..."];
    [sampleProtocol startSampleProcess];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - Sample protocol delegate
-(void)processCompleted{    
    [myLabel setText:@"Process Completed"];
}

@end
  1. 将看到如下所示的输出结果,最初的标签也会继续运行,一旦授权方法被SampleProtocol对象所调用,标签运行程序的代码也会更新。

file

若文章对你有帮助,可以点赞或打赏支持我们。发布者:lyh会员,转载请注明出处:http://61.174.243.28:13541/AY-knowledg-hub/%e5%a7%94%e6%89%98%ef%bc%88delegates%ef%bc%89%e7%a4%ba%e4%be%8b/

(0)
lyhlyh会员认证作者
上一篇 2023年 4月 10日 下午9:22
下一篇 2023年 4月 10日 下午10:13

相关推荐

  • Pandas安装

    安装 pandas 需要基础环境是 Python,开始前我们假定你已经安装了 Python 和 Pip。 使用 pip 安装 pandas: pip install pandas …

    2023年 5月 16日
  • users

    文章目录users概要主要用途选项参数返回值例子注意 users 打印当前主机所有登陆用户的名称。 概要 users [OPTION]… [FILE] 主要用途 每个显示的用户…

    入门教程 2024年 3月 11日
  • expr

    文章目录expr补充说明语法选项参数实例 expr 一款表达式计算工具 补充说明 expr命令 是一款表达式计算工具,使用它完成表达式的求值操作。 expr的常用运算符: 加法运算…

    入门教程 2023年 12月 14日
  • fc

    文章目录fc概要主要用途选项参数返回值例子注意 fc 显示历史列表中的命令或修改指定的历史命令并执行。 概要 fc [-e ename] [-lnr] [first] [last]…

    入门教程 2023年 12月 14日
  • watch

    文章目录watch补充说明语法选项参数实例 watch 可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令 补充说明 watch命令 以周期性的方式执行给定…

    入门教程 2024年 1月 3日
  • info

    文章目录info补充说明语法选项参数实例 info Linux下info格式的帮助指令 补充说明 info命令 是Linux下info格式的帮助指令。 就内容来说,info页面比m…

    入门教程 2023年 12月 19日
  • awk

    文章目录awk补充说明awk命令格式和选项awk模式和操作模式操作awk脚本基本结构awk的工作原理awk内置变量(预定义变量)将外部变量值传递给awk查找进程pidawk运算与判…

    入门教程 2023年 12月 6日
  • Docker 更改默认存储目录

    由于安装docker,默认的存储目录在根磁盘,会导致我们在拉取镜像的时候,更目录的空间越来越小,不修改存储目录的情况下,会导致我们可用空间越来越小,最终导致根目录不够用。根目录大点…

    2021年 11月 4日
  • nfsstat

    文章目录nfsstat补充说明语法选项实例 nfsstat 列出NFS客户端和服务器的工作状态 补充说明 nfsstat命令 用于列出NFS客户端和服务器的工作状态。 语法 nfs…

    入门教程 2024年 1月 10日
  • install

    文章目录install补充说明语法选项实例 install 安装或升级软件或备份数据 补充说明 install命令 的作用是安装或升级软件或备份数据,它的使用权限是所有用户。ins…

    入门教程 2023年 12月 19日

发表回复

登录后才能评论
Translate »