Как вы можете использовать циклический #import для строго типизированных объектов в target-c - PullRequest
1 голос
/ 08 февраля 2010

Как вы можете использовать циклический #import для строго типизированных объектов в target-c

У меня есть класс аудиоконтроллера, класс меню и класс просмотра игры.

Делегат приложения устанавливает эти классы и назначает указатели так:

класс меню знает о классе звука и просмотра игры класс просмотра игры имеет ссылку на класс аудио и меню

Я использую NSObject для ссылки на класс игрового вида из класса меню. Это связано с тем, что класс меню имеет ссылку на класс gameview и имеет объявление #import gameview.h. Код не будет компилироваться с циклическим # import

Предложения, пожалуйста :)?

@interface MenuViewController : UIViewController {

    NSObject *gameref; // weak type here to avoid include of gameview above
    AudioController *audioref;

}

и ...

#import "AudioController.h"
#import "MenuViewController.h"

    @interface GameViewController : UIViewController {

        MenuViewController *menuref;
        AudioController *audioref;

    }

1 Ответ

5 голосов
/ 08 февраля 2010

Fisrt, в вашем .h файле используйте

@class GameViewController, AudioController

и

@class AudioController, MenuViewController

в вашем файле .m используйте

#import "GameViewController"
#import "AudioController"

и

#import "AudioController.h"
#import "MenuViewController.h"

Нет проблемы с "круговой ссылкой". Во-вторых, использование NSObject вместо реального имени класса ни в коем случае не является слабой ссылкой. Кроме того, если вы имеете в виду #include, скажите #include. Если вы имеете в виду #import, скажите # import.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...