iOS 开发:使用代理模式实现任务完成通知
// MyDelegate.h
@protocol MyDelegate
- (void)didFinishTask; @end
// MyTask.h
@interface MyTask : NSObject
@property (nonatomic, weak) id
- (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
// 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。
原文地址: https://www.cveoy.top/t/topic/qxek 著作权归作者所有。请勿转载和采集!