// MyDelegate.h @protocol MyDelegate

  • (void)didFinishTask; @end

// MyTask.h @interface MyTask : NSObject @property (nonatomic, weak) id delegate;

  • (void)startTask; @end

// MyTask.m @implementation MyTask

  • (void)startTask { // 执行任务的代码

    // 任务完成后通知代理 if ([self.delegate respondsToSelector:@selector(didFinishTask)]) { [self.delegate didFinishTask]; } }

@end

// ViewController.h #import "MyDelegate.h"

@interface ViewController : UIViewController @end

// ViewController.m @implementation ViewController

  • (void)viewDidLoad { [super viewDidLoad];

    MyTask *task = [[MyTask alloc] init]; task.delegate = self; [task startTask]; }

  • (void)didFinishTask { NSLog('任务完成'); }

@end

在这个示例中,MyDelegate 是一个协议,定义了一个 didFinishTask 方法。MyTask 是一个任务类,包含一个 delegate 属性,并且在任务完成后通知代理。ViewController 是一个视图控制器类,遵循了 MyDelegate 协议,并实现了 didFinishTask 方法。在 ViewController 的 viewDidLoad 方法中,创建了一个 MyTask 对象,并将自身设置为其代理,然后调用 startTask 方法开始执行任务。当任务完成后,MyTask 会通过代理方法通知 ViewController。

iOS 开发:使用代理模式实现任务完成通知

原文地址: https://www.cveoy.top/t/topic/qxek 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录