このオブジェクトを前方宣言するにはどうすればよいですか:
@interface MyClass : NSObject <AVAudioSessionDelegate>
{
}
@end
目標 c で
このオブジェクトを前方宣言するにはどうすればよいですか:
@interface MyClass : NSObject <AVAudioSessionDelegate>
{
}
@end
目標 c で
これは ObjC 型の前方宣言です。
@class MyClass;
そして、これは ObjC プロトコルの前方宣言です。
@protocol AVAudioSessionDelegate;
なぜこれが役立つのか知りたい方へ: 前方宣言を使用すると、依存関係を大幅に削減し、ビルド時間を大幅に短縮できます。これにより、#import
ヘッダーやフレームワーク全体 (次に#import
他のフレームワーク) を回避できるからです。前方宣言を使用しないと、多くの不要なヘッダーがプログラムの他の部分に表示されます。1 つのヘッダーを変更すると、多くのファイルが再コンパイルされる可能性があり、コンパイルとリンクの時間が長くなります。ObjC 型は常に (抽象化レベルで) ポインターとして扱われるため、ほとんどの場合、前方宣言で十分です。@implementation
次に、またはクラスの継続でivar を宣言#import
し、*.m
ファイルに入れることができます。もう 1 つの理由は、循環依存を避けるためです。