导致编译器错误的相互依赖对象

问题描述 投票:0回答:1

我有:

@interface A
@property (nonatomic, retain) B *toB;
@end

@interface B
@property (nonatomic, retain) A *toA;
@end

这会导致编译器给我这个:

错误:“属性”之前预期有说明符限定符列表

现在,这似乎与独立解析文件的顺序有关,只要首先声明指向的对象,它们就可以工作。

我该如何解决这个问题?

objective-c
1个回答
2
投票

通过@class使用前向声明让编译器知道有一个名为A的类,它还没有看到接口。

例如:

@class A;
@class B;

@interface A
@property (nonatomic, retain) B *toB;
@end

@interface B
@property (nonatomic, retain) A *toA;
@end
© www.soinside.com 2019 - 2024. All rights reserved.