2011-12-25 4 views
0

Кажется, у меня проблемы с использованием классов из других файлов в моем интерфейсе. То, как я написал это до сих пор есть ...Использование пользовательских классов в интерфейсе (Objective C)

#import "NodeBase.h" 

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

где NodeBase это заголовочный файл, который имеет дело с импортом из других классов, т.е.

#import <Foundation/Foundation.h> 

#import "Node.h" 
#import "NodeConnection.h" 
#import "NodeProperty.h" 

ошибки я получаю это " Parse Issue: Ожидаемый тип ", нет ли способа использовать класс в этом контексте? Или я получил синтаксис совершенно неправильно?

+1

Символ 'Node' который содержит' Node'. Похоже, что в ваших объявлениях «Узла» происходит какая-то циркулярная ссылка. –

ответ

2

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.

+0

О, это так много смысла, я буду следить за этим в будущем, Спасибо за быстрый ответ, есть замечательное Рождество :) – SacredGeometry

+0

Хорошо, я попробовал это, но мне нужно импортировать класс node в другие классы , Я думаю, что мне просто нужно переосмыслить/абстрагировать некоторые из этих классов, если нет альтернативы. – SacredGeometry

2

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

@interface Node; 

или

@class myClass; 

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

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

+0

Большое вам спасибо за ответ, С Рождеством Христовым. – SacredGeometry

Смежные вопросы