在我的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文件的圆圈导入。
答案 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;