voz traductor traducir traduccion shopkins ingles google español buscar objective-c cocoa import

objective-c - traductor - traducir en español



#import en el objetivo C: ¿Estoy haciendo esto mal? (3)

Lo sentimos, no pudimos encontrar un título más apropiado.

En Mi código, tengo dos clases que deberían saber de la existencia de los demás. Entonces utilizo una variable de instancia que apunta a la otra clase. Para que eso funcione (¿supongo?) El archivo de cabeceras de otras clases debe importarse para que sepa qué métodos tiene y tal.

Aquí está mi código (despojado)

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

Como puede ver, ambos se importan entre sí, pero esto crea un error (nombre de tipo desconocido ''IRCConnection'') en uno, y en el otro nombre de tipo desconocido ''MainMenuController''.

Sin embargo, cuando la conexión es de una sola manera (por ejemplo, solo MainMenuController sabe acerca de IRCConnection) y, por lo tanto, solo hay una declaración de importación en uno de los dos, funciona bien.

¿Cómo puedo hacer que se conozcan el uno al otro? En ambos sentidos.

Espero que esta pregunta tenga sentido.


En el encabezado, use forward declaration:

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

En el archivo de origen ( .m ), haz #import .


No puedes tener importaciones circulares. Debes dividirlos o presentar algunas declaraciones avanzadas.


puede eliminar la importación de IRCConnection.h y usar una instrucción @class lugar.

Me gusta esto:

#import <Foundation/Foundation.h> @class MainMenuController; @interface IRCConnection : NSObject {

luego agrega un #import "MainMenuController.h" a IRCConnection.m