首页 > 其他分享 >无涯教程-OC - 委托(Delegates)

无涯教程-OC - 委托(Delegates)

时间:2023-10-02 18:32:03浏览次数:41  
标签:end SampleProtocol ViewController void OC 无涯 Delegates delegate import

假设对象A调用对象B来执行操作,动作完成后,对象A应知道B已完成任务并采取必要的措施,这是在代表的帮助下实现的。

上面示例中的关键概念是-

  • A是B的委托对象。

  • B将引用A。

  • A将实现B的委托方法。

  • B将通过委托方法通知A。

创建步骤

第1步 - 首先,创建一个单视图应用程序。

第2步 - 然后选择File→New→File...

iOS Tutorial

第3步 - 然后选择" Objective C Class",然后单击" Next"。

第4步 - 为该类命名,如SampleProtocol,其子类为NSObject,如下所示。

iOS Tutorial

第5步 - 然后选择创建。

第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; //实例方法
@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

第8步 - 如下所示,通过将标签从对象库拖动到UIView,在ViewController.xib中添加UILabel。

iOS Tutorial

 第9步 - 为标签创建一个IBOutlet,并将其命名为myLabel,并按如下所示更新代码以在ViewController.h中采用SampleProtocolDelegate。

#import <UIKit/UIKit.h>
#import "SampleProtocol.h"

@interface ViewController : UIViewController<SampleProtocolDelegate> {
   IBOutlet UILabel *myLabel;
}
@end

第10步 - 实现委托方法,为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];
   //在加载视图后进行任何额外的设置,通常是从一个 nib 开始。
}

- (void)didReceiveMemoryWarning {
   [super didReceiveMemoryWarning];
   //处置任何可以重新创建的资源。
}

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

第11步  - 无涯教程将看到如下输出。最初,标签显示"Processing...",一旦SampleProtocol对象调用了委托方法,该标签就会更新。

iOS Tutorial

参考链接

https://www.learnfk.com/ios/ios-delegates.html

标签:end,SampleProtocol,ViewController,void,OC,无涯,Delegates,delegate,import
From: https://blog.51cto.com/u_14033984/7684072

相关文章

  • ubuntu20.04 将 max locked memory从默认的65536改为无限制
    RDMA开发中,需要注册MemoryRigon,需要比较大的内存区域,如果不把Ubuntu20.04系统默认的maxlockedmemory从默认的65536改为unlimited,将会报出这个错误:Couldn'tallocateMR解决办法如下(感谢chatGPT老师哈哈)Tosetthemaximumlockedmemoryfrom65536tounlimitedonUbunt......
  • SpringIOC
    ......
  • next-key lock
    加锁基本单位next-keylock=gaplock+rowlock范围前开后闭区间加锁规则原则1加锁的基本单位是next-keylock。原则2查找过程中访问到的对象才会加锁。优化1索引上的等值查询,给唯一索引加锁的时候,next-keylock退化为行锁。优化2索引上的等值查......
  • RocketMQ简单入门
    服务端安装及配置docker安装dockerpullrocketmqinc/rocketmq:4.4.0指定版本号是为了后面确定配置文件的路径启动namesrvdockerrun-d-p9876:9876--namerocketmq-nameservice-eMAX_POSSIBLE_HEAP=100000000rocketmqinc/rocketmq:4.4.0shmqnamesrv运行成功执行m......
  • 第一周 安装rocky 8.5
    1、下载RockyLinux官方镜像8.5  1.1打开网址直接下载http://dl.rockylinux.org/vault/rocky/8.5/isos/x86_64/Rocky-8.5-x86_64-dvd1.iso2.创建虚拟机导入iso文件,进入RockyLinux的初始安装界面,选择installRockyLinux8后,按下回车键enter,开始安装RockyLinux。  ......
  • IoC容器趣谈
    今天我们来谈谈Spring的内核之一——IoC容器大家可能会有这样的疑问:”这玩意为啥要叫容器呢?好奇怪“”容器不是装东西的吗?难道IoC容器也是用来装什么东西的?“有上述两个想法的小伙伴,我觉得你们是非常聪明的,并且平时有思考的习惯。别着急,让我们慢慢往下看IoC容器的两大重要概......
  • Docker V24 及 Docker Compose V2 的安装及使用
    前言Docker是一款流行的开源容器化平台,使用Docker可以有效地隔离应用程序和系统环境,使得应用程序在不同的环境中具有相同的行为DockerCompose是一个用于定义和管理多个Docker容器的工具Docker官方文档:文档地址DockerHub:容器镜像库和社区作者:易墨发布时间:2023.1......
  • 【Docker】镜像的创建、管理与发布
    镜像的获取镜像可以从以下方式获得:从远程镜像仓库拉取,可以是公有仓库,也可以是私有仓库从Dockerfile构建从文件导入(离线)从容器提交镜像的基本操作跟镜像相关的命令如下:$dockerimage--helpUsage:dockerimageCOMMANDManageimagesCommands:buildBuildanimage......
  • 在线文字识别转换(通用OCR)ocr.wdku.net
    背景医疗保险的电子,一般为PDF版本,并且PDF中的内容全部都是整页整页的图片,导致无法对合同内容进行搜索。 在线文字识别转换(通用OCR)第一步:文件上传第二步:参数选择第三步:转换结果(直接显示) 类似的工具很多,今天分享一个实测10页PDF内容OCR识别,靠谱的。https://ocr.wdku.net......
  • Protocol message had invalid UTF-8异常解决
    UTF-8是一种常用的字符编码方案,用于在计算机系统中表示和传输文本。它使用变长字节序列来表示不同的字符。当一个协议消息被解析时,如果消息中包含了无效的UTF-8字符,就会引发这个错误。要解决这个问题,可以采取以下步骤:检查数据源:首先,确认数据源是否提供了有效的UTF-8编码的消息......