我该如何前向声明这个对象:
@interface MyClass : NSObject <AVAudioSessionDelegate>
{
}
@end
在 Objective-C 中
我该如何前向声明这个对象:
@interface MyClass : NSObject <AVAudioSessionDelegate>
{
}
@end
在 Objective-C 中
@class MyClass;
这是一个ObjC协议的前向声明:
@protocol AVAudioSessionDelegate;
如果你想知道这个有什么用处:前向声明可以显著减少依赖关系和缩短构建时间,因为它允许你避免使用#import
引入头文件和/或整个框架(然后再#import
其他框架)。当不使用前向声明时,许多不必要的头文件对程序的其他部分可见--更改一个头文件可能会导致重新编译许多文件,从而使编译和链接时间增加。由于ObjC类型总是被视为指针(在我们的抽象层面),前向声明在大多数情况下已经足够。然后你可以在@implementation
或类扩展中声明你的实例变量,#import
可以放在*.m
文件中。另一个原因是避免循环依赖。
@interface
/@implementation
,因此您不会想到使用@class
。我通过谷歌搜索“@interface @implementation forward declaration”找到了这个答案。 - bobobobo