13

このオブジェクトを前方宣言するにはどうすればよいですか:

@interface MyClass : NSObject <AVAudioSessionDelegate>
{

}

@end

目標 c で

4

1 に答える 1

29

これは ObjC 型の前方宣言です。

@class MyClass;

そして、これは ObjC プロトコルの前方宣言です。

@protocol AVAudioSessionDelegate;

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

于 2013-05-28T10:04:56.773 に答える