#IMPORT在目标C中:我做错了吗?[英] #import in objective C: Am I doing this wrong?

问题描述

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

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

这是我的代码(剥离)

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

您可以看到他们彼此互相导入,但是在一个和另一个未知类型的名称" main -menucontroller"中,这会创建一个错误(未知类型的名称'ircconnection').

但是,当连接仅是一种方式时(例如,只有mainmenucontroller知道IRCCONNECTION),因此在两者之一中只有一个导入语句,它可以正常工作.

我如何让他们彼此了解?这两种方式.

希望这个问题有任何意义.

推荐答案

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

这样:

#import <Foundation/Foundation.h>

@class MainMenuController;

@interface IRCConnection : NSObject {

然后将#import "MainMenuController.h"添加到IRCConnection.m

其他推荐答案

在标题中,使用前向声明:

@class IRCConnection;

@interface MainMenuController : NSViewController {    
    IRCConnection *ircConnection; // ok
}

在源文件(.m)中,做#import.

其他推荐答案

您不能有圆形导入.您需要将它们分解或引入一些远期声明.

本文地址:https://www.itbaoku.cn/post/519005.html

相关标签/搜索