将@property用于我实现的类

时间:2012-01-21 05:38:30

标签: objective-c properties

我在目标c中创建了两个类,我想将其中一个用作另一个的属性。更具体地说,其中一个类是一个'term',它包含一个整数变量和一个充当变量的nsstring。另一个类是一个'表达式',它有一个nsmutable数组作为一个实例变量,它包含'terms'作为它的对象。我想要做的是添加一个术语中有一个具有“表达式”作为属性来实现诸如分配在括号上并用表达式替换变量的可能性。但是,Xcode告诉我“表达式”不是可接受的类型名称,尽管我已经导入了我的表达式头文件。我想我可能已经阅读过只有基础类可用作属性的地方。如何将此类添加为实例变量?

2 个答案:

答案 0 :(得分:2)

我怀疑你有一个导入周期,如下所示:

Expression.h

#import "Term.h"

@interface Expression : NSObject
...

Term.h

#import "Expression.h"

@interface Term : NSObject
...

注意每个文件如何导入另一个文件?那不行。相反,您需要使用前向声明:

Expression.h

@class Term;  // tell the compiler that Term is a class name

@interface Expression : NSObject
...

Term.h

@class Expression;  // tell the compiler that Expression is a class name

@interface Term : NSObject
...

然后,在.m个文件中,您可以安全地导入两个.h个文件:

Expression.m

#import "Expression.h"
#import "Term.h"

@implementation Expression
...

Term.m

#import "Term.h"
#import "Expression.h"

@implementation Term
...

答案 1 :(得分:1)

虽然上面的答案也是正确的,但在我的情况下,原型/界面声明中缺少“@end”的问题。