1

我在 Objective C 中有 2 个课程。

A类:ViewController B类:UITableViewController

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

#import "ClassB"

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

在上午班:

@implementation ClassA

@synthesize delegateClassB = _delegateClassB;

@end

Bh级

@protocol ClassBDelegate

- (void)helloWorld

@end

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

在 Bm 类中,我可以正确使用委托:

[_delegate helloWorld];

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

有什么建议吗?

4

2 回答 2

2

您可以在一个文件中添加所有协议,独立于 viewControllers。示例 Protocols.h/m 并毫无问题地导入此文件。

于 2013-01-28T16:00:39.337 回答
2

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

我使用单例解决了这个问题

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

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

于 2013-01-29T11:31:29.223 回答