以下是一个示例的 Objective-C 代码,实现一个带有两个参数的代理回调,用于成功或失败的通知:

首先,创建一个代理协议:

@protocol MyDelegate <NSObject>
- (void)didSucceedWithParam1:(NSString *)param1 param2:(NSString *)param2;
- (void)didFailWithError:(NSError *)error;
@end

接下来,在包含该代理的类中声明一个代理属性:

@interface MyObject : NSObject
@property (nonatomic, weak) id<MyDelegate> delegate;
- (void)performAction;
@end

然后,在实现文件中实现该代理的方法:

@implementation MyObject

- (void)performAction {
    // 模拟成功或失败的情况
    BOOL success = arc4random_uniform(2); // 随机生成0或1
    
if (success) {
        NSString *param1 = 'Hello';
        NSString *param2 = 'World';
        [self.delegate didSucceedWithParam1:param1 param2:param2];
    } else {
        NSError *error = [NSError errorWithDomain:'com.example.app' code:100 userInfo:nil];
        [self.delegate didFailWithError:error];
    }
}

@end

最后,在使用该代理的地方,实现代理方法并设置代理对象:

@interface MyViewController : UIViewController<MyDelegate>
@property (nonatomic, strong) MyObject *myObject;
@end

@implementation MyViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.myObject = [[MyObject alloc] init];
    self.myObject.delegate = self;
    
    // 调用代理方法
    [self.myObject performAction];
}

- (void)didSucceedWithParam1:(NSString *)param1 param2:(NSString *)param2 {
    NSLog('Success: %@ %@', param1, param2);
}

- (void)didFailWithError:(NSError *)error {
    NSLog('Failure: %@', error.localizedDescription);
}

@end

这样,在MyViewController中,当调用performAction方法时,会根据成功或失败的情况调用相应的代理方法,并在控制台打印相应的消息。

iOS 开发:使用代理实现带两个参数的成功或失败回调 (OC 代码)

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

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