Использование пользовательских классов в интерфейсе (Цель C) - PullRequest
0 голосов
/ 25 декабря 2011

Кажется, у меня возникли некоторые проблемы с использованием классов из других файлов в моем интерфейсе.Пока я написал это так:

#import "NodeBase.h"

@interface Node : NSObject {
@public
     Node * testnode;
}

, где NodeBase - заголовочный файл, который имеет дело с импортом других классов, т.е.получение - это "проблема разбора: ожидаемый тип", нет ли способа использовать класс в этом контексте?Или я неправильно понял синтаксис?

Ответы [ 2 ]

2 голосов
/ 25 декабря 2011

Метод, который я использую для устранения циклических зависимостей, использует следующие определения:

@interface Node;

или

@class myClass;

просто добавление этой строки определяет интерфейс или класс и делает его известным компилятору. Фактическое длинное определение может следовать после

Итак, попробуйте добавить строку @interface Node; перед началом для вашего интерфейса

2 голосов
/ 25 декабря 2011

Ваш NodeBase.h импортирует Node.h, а ваш Node.h импортирует NodeBase.h, создавая циклическую ссылку.Это недопустимо.

Вы можете поместить все в Node.h

#import <Foundation/Foundation.h>
#import "NodeConnection.h"
#import "NodeProperty.h"

@interface Node : NSObject {
@public
     Node * testnode;
}

Тогда вы можете просто импортировать Node.h в те места, где вам нужно сослаться на Node*.

Если вы хотите скрыть общий импорт (например, <Foundation/Foundation.h>), вы можете поместить его в файл SupportingFile/<Your-Project-Name>.pch.

...