gpt4 book ai didi

ios - 简单的 iOS 委托(delegate)/回调

转载 作者:行者123 更新时间:2023-11-29 02:54:22 24 4
gpt4 key购买 nike

我有一个简单的 ViewController。在我放的 .m 文件中 #import "管理器.h"

有一个按钮,当它被点击时执行下面的代码:

Manager* manager = [[Manager alloc] init];
NSString* str = [manager doit];
NSLog(@"str = %@", str);

Manager 是 NSObject 的子类。在 Manager.m 中我有这个方法:

- (NSString*)doit{
return @"did it";
}

太棒了。所有这些都按预期工作。

我需要的是,如果可能的话,如果是一个好的做法,发送/让经理理解,从方法 doit应调用 ViewController 中的另一个方法。某种回调/委托(delegate)。我该如何实现?

当我打电话 [经理做];我还想通知应该执行 ViewController 中的方法。我希望你明白我的意思,否则我可以写更多的细节。谢谢

最佳答案

是的,您可以使用委托(delegate),您在 Manager 对象中的委托(delegate)实现应如下所示:

@protocol managerDelegate <NSObject>

-(void)doSomthingAndGetThisString: (NSString *)stringText;

@end

@interface Manager : NSObject
@property (nonatomic,strong) id <managerDelegate>delegate;
@end

如您所见,Manager 对象在 header 接口(interface)中声明其委托(delegate)协议(protocol),因此任何类都可以在其上签名,如果这样做,则应执行“doSomthingAndGetThisString”方法。

每当“Manager”对象选择触发委托(delegate)方法时,他都会像这样调用它:

- (NSString*)doit{
//Call my delegate:
[self.delegate doSomthingAndGetThisString:@"Passing this stringt to my delegate"];
return @"did it";

}

View Controller :ViewController需要保留管理器对象的一个​​属性:

@property (nonatomic,strong) Manager *myManager;

现在,当您分配“myObject”时,ViewController 应该“签名”以执行委托(delegate),如下所示:

  _myManager = [Manager new];
_myManager.delegate = self;

当然还有方法:

-(void)doSomthingAndGetThisString: (NSString *)stringText;

只要“Manager”对象启动它,就会调用它。

希望对你有帮助

关于ios - 简单的 iOS 委托(delegate)/回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24104728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com