OC - Delegates

首页 / iOS / Delegates

假设对象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 (nonatomicstrong) 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

这一章《OC - Delegates》你学到了什么?在下面做个笔记吧!做站不易,你的分享是对我们最大的支持,感谢!😊

相关文章

从0开始学微服务 -〔胡忠想 - 43讲〕

编译原理实战课 -〔宫文学 - 55讲〕

用户体验设计实战课 -〔相辉 - 34讲〕

郭东白的架构课 -〔郭东白 - 49讲〕

如何在 SwiftUI 上制作可点击的map route?

如何在模拟器 iOS 13 中使用暗模式?

如何删除 SwiftUI NavigationView 中的默认导航栏空间

Xcode 命令 /usr/bin/codesign 失败,退出代码为 1:errSecIntern...

Xcode - 找不到测试主机

“自动调整字体需要使用动态类型文本样式”警告是什么意思?

视频推荐〔13_传智播客iOS视频教程_NSObject指针和id指针〕

更多视频 »
好记忆不如烂笔头。留下你的足迹吧 :)