以下是一个示例的 Objective-C 代码,演示了如何实现一个带有多个参数的代理方法:

首先,创建一个协议文件(例如:MyDelegate.h)来定义代理方法:

#import <Foundation/Foundation.h>

@protocol MyDelegate <NSObject>

- (void)didSomethingWithParam1:(NSString *)param1 param2:(NSInteger)param2;

@end

然后,在需要使用代理的类中,声明一个代理属性并调用代理方法:

#import "MyDelegate.h"

@interface MyClass : NSObject

@property (nonatomic, weak) id<MyDelegate> delegate;

- (void)doSomething;

@end

@implementation MyClass

- (void)doSomething {
    // 执行某些操作
    
    // 调用代理方法
    if ([self.delegate respondsToSelector:@selector(didSomethingWithParam1:param2:)]) {
        [self.delegate didSomethingWithParam1:'Hello' param2:123];
    }
}

@end

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

#import "MyClass.h"

@interface ViewController () <MyDelegate>

@property (nonatomic, strong) MyClass *myClass;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.myClass = [[MyClass alloc] init];
    self.myClass.delegate = self;
    
    [self.myClass doSomething];
}

- (void)didSomethingWithParam1:(NSString *)param1 param2:(NSInteger)param2 {
    NSLog('Param1: %@, Param2: %ld', param1, (long)param2);
}

@end

在上面的代码中,MyClass 是一个具有代理功能的类,它在 doSomething 方法中执行一些操作,并通过调用代理方法将结果返回给代理对象。在 ViewController 中,实现了 MyDelegate 协议,并将 self 设置为 myClass 的代理对象。当 myClass 执行 doSomething 方法时,会调用代理方法 didSomethingWithParam1:param2:,并将参数传递给代理对象。

这样,当 MyClass 执行完操作后,ViewController 就能够接收到代理方法的调用,并处理传递的参数。


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

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