以下是一个简单的代理实现的OC代码示例:

@protocol MyDelegate

  • (void)didFinishTask;
  • (void)didFailTaskWithError:(NSError *)error; @end

@interface MyObject : NSObject @property (nonatomic, weak) id delegate;

  • (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 () @property (nonatomic, strong) MyObject *myObject; @end

@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会接收到相应的回调,并执行相应的操作。

iOS 开发:使用代理模式编写 Objective-C 代码示例

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

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