我在目标c中创建了两个类,我想将其中一个用作另一个的属性。更具体地说,其中一个类是一个'term',它包含一个整数变量和一个充当变量的nsstring。另一个类是一个'表达式',它有一个nsmutable数组作为一个实例变量,它包含'terms'作为它的对象。我想要做的是添加一个术语中有一个具有“表达式”作为属性来实现诸如分配在括号上并用表达式替换变量的可能性。但是,Xcode告诉我“表达式”不是可接受的类型名称,尽管我已经导入了我的表达式头文件。我想我可能已经阅读过只有基础类可用作属性的地方。如何将此类添加为实例变量?
答案 0 :(得分:2)
我怀疑你有一个导入周期,如下所示:
#import "Term.h"
@interface Expression : NSObject
...
#import "Expression.h"
@interface Term : NSObject
...
注意每个文件如何导入另一个文件?那不行。相反,您需要使用前向声明:
@class Term; // tell the compiler that Term is a class name
@interface Expression : NSObject
...
@class Expression; // tell the compiler that Expression is a class name
@interface Term : NSObject
...
然后,在.m
个文件中,您可以安全地导入两个.h
个文件:
#import "Expression.h"
#import "Term.h"
@implementation Expression
...
#import "Term.h"
#import "Expression.h"
@implementation Term
...
答案 1 :(得分:1)
虽然上面的答案也是正确的,但在我的情况下,原型/界面声明中缺少“@end”的问题。