gpt4 book ai didi

ios - 在 Objective C 中使用双工(双向)委托(delegate)

转载 作者:行者123 更新时间:2023-12-01 18:24:40 26 4
gpt4 key购买 nike

我在 Objective C 中有 2 个类(class)。

A类: View Controller
B类:UITableViewController

在 Storyboard 中,我添加了一个 B 类对象,并使用 A 类的回调调用。我使用 A.h 类中的委托(delegate)解决了这个问题:

#import "ClassB"

@interface ClassA : ViewController
< ClassBDelegate >
{
id<ClassADelegate> _delegateClassA;
}

在上午类:
@implementation ClassA

@synthesize delegateClassB = _delegateClassB;

@end

在 B.h 类
@protocol ClassBDelegate

- (void)helloWorld

@end

@interface ClassB : UITableViewController
{
id<ClassBDelegate> _delegate;
@property (nonatomic, readwrite) id<ClassBDelegate> delegate;
}

在 B.m 类中,我可以正确使用委托(delegate):
[_delegate helloWorld];

问题是,我也想使用相反的方式,从 A 到 B 类的委托(delegate)。我不能使用相同的方式以另一种方式解决问题,因为如果我在 B 和 A 之间使用导入,它会进行循环导入并且我无法编译代码。

有什么建议吗?

最佳答案

不可能将您的 A 类委托(delegate)给 B 类和 B 类委托(delegate)给 A 类。这是因为要创建一个委托(delegate),您需要导入另一个类,并将委托(delegate)设置为另一个类。

我使用 Singleton 解决了这个问题

使用 Singleton,您可以像往常一样将外部类的普通委托(delegate)委托(delegate)给主要类 (A)。将单例实现为静态接口(interface),可以使用主类(A)中的共享指针来调用单例中的函数回调,并使用从单例到 B 的委托(delegate)。

使用这种方法,您将解决循环标题问题。希望这对您有所帮助。

关于ios - 在 Objective C 中使用双工(双向)委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14565946/

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