iOS 开发:使用代理实现带两个参数的成功或失败回调 (OC 代码)
以下是一个示例的 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方法时,会根据成功或失败的情况调用相应的代理方法,并在控制台打印相应的消息。
原文地址: https://www.cveoy.top/t/topic/qxep 著作权归作者所有。请勿转载和采集!