基本上,我想把函数从一个类调用到另一个类。我知道我需要委托。 但是,例如,有A类和B类。我需要从类B调用A类中的函数,我还需要从类A调用类B中的函数。
因此,我需要像
一样导入import "classA.h" //to do in class B
import "classB.h" //to do in class A
//then i may have delegate like this in both class
@protocol emailingroupViewControllerDelegate <NSObject>
-(void)updateGroupEmail :(NSString *)inputKey;
@end
问题是它不允许我在两个类之间导入这样的东西。我该怎么办?
答案 0 :(得分:1)
您的标头中有一个依赖项循环。这很容易解决;不是在每个头中包含其他类的头文件,而是使用@class
指令并在实现文件中包含头文件。
在classA.h
中,执行以下操作:
@class ClassB
@interface ClassA
...
@end
在classA.m
中,执行以下操作:
#import "classA.h"
#import "classB.h"
@implementation ClassA : NSObject
...
@end
在classB.h
中,执行以下操作:
@class ClassA
@interface ClassB
...
@end
最后,在classB.m
中,执行以下操作:
#import "classB.h"
#import "classA.h"
@implementation ClassB : NSObject
...
@end
但是,如果您尝试使用委托模式,则您的委托应该实现协议而不是显式类。您应该在委托和在第三个类中使用它的对象之间建立连接。这将是ClassA的标题:
@protocol SomeDelegate <NSObject>
- (void)classA:(ClassA *)classA didSomethingWithAString:(NSString *)string;
@end
@interface ClassA : NSObject
@property (weak, nonatomic) id <SomeDelegate> delegate;
@end
然而,再一次,如果您要做的只是让ClassA调用ClassB中的一个函数,它可以调用ClassA中的函数,您可能需要重新检查您设计类的方式。 / p>