我怎样才能宣布' AProperty'在目标c中的.h文件中,不包含AProperty.h

时间:2014-12-04 22:53:31

标签: objective-c

在我的AnInterface.h文件中,我声明了一个接口,它有一个属性引用另一个接口'AProperty'。 AProperty中定义了AProperty:

@interface AnInterface :UICollectionViewFlowLayout

@property (strong, nonatomic) AProperty *aProperty;
@end

如何在不导入AProperty.h的情况下在AnInterface.h中声明AProperty?在C ++中,我可以做类似'class AProperty'的事情。我无法导入AProperty.h,因为它会创建.h文件的圆圈导入。

2 个答案:

答案 0 :(得分:2)

你可以做一个前瞻声明:

@class AProperty;

但请记住,其他类必须包含AProperty的标题才能访问此类的任何成员。

假设你有一个类和协议:

@class MyClass;

@protocol Protocol

- (void)doSomethingWithClass:(MyClass*)myClass;

@end

@interface MyClass : NSObject

@property (weak) id<Protocol> delegate;

@end

因为协议引用MyClass类型,编译器必须首先解析它。由于MyClass是在协议之后声明的,我们需要让编译器知道该类存在。这是前向声明变得方便的地方。

答案 1 :(得分:1)

与您的C ++体验类似:

@class AProperty;