对不起,找不到更合适的标题。#目标进口C:我做错了吗?
在我的代码中,我有两个类应该知道彼此的存在。所以我使用指向其他类的实例变量。为了这个工作(我猜?)其他类头文件应该被导入,所以它知道它有哪些方法等。
这里是我的代码(精简)
MainMenuController.h:
#import <Cocoa/Cocoa.h>
#import "IRCConnection.h"
@interface MainMenuController : NSViewController {
IRCConnection *ircConnection;
}
@property (strong) IRCConnection *ircConnection;
@end
IRCConnection.h:
#import <Foundation/Foundation.h>
#import "MainMenuController.h"
@interface IRCConnection : NSObject {
MainMenuController *mainMenuController;
}
@property (strong) MainMenuController *mainMenuController;
@end
正如你可以看到他们两个进口对方,但这在其中一个未知类型名称'MainMenuController'中创建一个错误(未知类型名称'IRCConnection')。
然而,当连接只是一个方法(例如,仅MainMenuController知道IRCConnection),因此,只有在这两个中的一个import语句,它工作正常。
我该如何让他们相互了解?两种方式。
希望这个问题是有道理的。
这是正确的方法吗? – Matthijn
没有“正确的方式”,但通常的做法是'#import'框架,并在头文件中为其他类使用'@ class'。在实现('.m')文件中,你可以''在你的'.h'文件中''导入'@ class'的所有东西。这种做法有助于避免'#import'循环和双'#imports'。 – spudwaffle
我在'.h'中说'@ class',在'.m'中''import'是最接近“正确方式”的东西。至少这是绝对可以接受的做法。 – andyvn22