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方法时,会根据成功或失败的情况调用相应的代理方法,并在控制台打印相应的消息
原文地址: http://www.cveoy.top/t/topic/iRcL 著作权归作者所有。请勿转载和采集!