目标C中的#import:我这样做错了吗?

Mat*_*ijn 3 import cocoa objective-c

对不起,找不到更合适的标题.

在我的代码中,我有两个应该知道彼此存在的类.所以我使用一个指向另一个类的实例变量.为了工作(我猜?)应该导入其他类头文件,以便它知道它有哪些方法等.

这是我的代码(剥离)

MainMenuController.h:

    #import <Cocoa/Cocoa.h>
    #import "IRCConnection.h"

    @interface MainMenuController : NSViewController {    
        IRCConnection *ircConnection;
    }

    @property (strong) IRCConnection *ircConnection;

    @end
Run Code Online (Sandbox Code Playgroud)

IRCConnection.h:

    #import <Foundation/Foundation.h>
    #import "MainMenuController.h"

    @interface IRCConnection : NSObject {

        MainMenuController *mainMenuController;
    }

    @property (strong) MainMenuController *mainMenuController;

    @end
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它们都互相导入,但这会在一个中创建一个错误(未知类型名称'IRCConnection'),而在另一个未知类型名称'MainMenuController'中.

但是,当连接只是一种方式(例如,只有MainMenuController知道IRCConnection),因此在其中一个中只有一个import语句,它工作正常.

我怎么能让他们互相了解?在两个方面.

希望这个问题有道理.

Mat*_*uch 7

您可以从中删除导入IRCConnection.h并使用@class语句.

像这样:

#import <Foundation/Foundation.h>

@class MainMenuController;

@interface IRCConnection : NSObject {
Run Code Online (Sandbox Code Playgroud)

然后添加一个#import "MainMenuController.h"IRCConnection.m