iOS 开发:使用代理模式编写 Objective-C 代码示例
以下是一个简单的代理实现的OC代码示例:
@protocol MyDelegate
- (void)didFinishTask;
- (void)didFailTaskWithError:(NSError *)error; @end
@interface MyObject : NSObject
@property (nonatomic, weak) id
- (void)startTask; @end
@implementation MyObject
-
(void)startTask { // 执行任务
// 任务完成后,调用代理方法 if ([self.delegate respondsToSelector:@selector(didFinishTask)]) { [self.delegate didFinishTask]; } else { NSLog(@"Delegate did not respond to didFinishTask"); }
// 任务失败时,调用代理方法 NSError *error = [NSError errorWithDomain:@"com.example.error" code:0 userInfo:nil]; if ([self.delegate respondsToSelector:@selector(didFailTaskWithError:)]) { [self.delegate didFailTaskWithError:error]; } else { NSLog(@"Delegate did not respond to didFailTaskWithError:"); } }
@end
@interface ViewController ()
@implementation ViewController
-
(void)viewDidLoad { [super viewDidLoad];
self.myObject = [[MyObject alloc] init]; self.myObject.delegate = self;
[self.myObject startTask]; }
#pragma mark - MyDelegate
-
(void)didFinishTask { NSLog(@"Task finished successfully"); }
-
(void)didFailTaskWithError:(NSError *)error { NSLog(@"Task failed with error: %@", error); }
@end
在上面的示例中,MyObject是一个包含代理的类,当执行任务完成或失败时,调用代理方法。ViewController是一个使用MyObject类的视图控制器,它遵循MyDelegate协议,并实现了代理方法。当任务完成或失败时,ViewController会接收到相应的回调,并执行相应的操作。
原文地址: https://www.cveoy.top/t/topic/qFbf 著作权归作者所有。请勿转载和采集!