0

私はCocos2d2.xとiOS5.0を使用しています。

「@classComponent」タグの使用法に関する優れたチュートリアルや説明を誰かに教えてもらえますか?

それを参照するデザイン/パターンはありますか、それともコードに固有の何かをしますか?

私は私のグーグル検索で多くを見つけていません。

4

2 に答える 2

3

@classそれに続く名前がObjective-Cクラスの名前であることをコンパイラに通知するだけです。そのタイプのシンボルを定義する必要があるが、定義全体をインポートするのがやり過ぎであるか、実際の問題を引き起こす場合に、.hファイルで使用されます。(たとえば、それぞれが他方を参照する2つのクラス。)

于 2013-01-05T14:34:39.147 に答える
1

それが機能する方法は、通常、インターフェースでクラスを参照する場合、そのクラスのヘッダーファイルを#importする必要があるということです。

#import "OtherClass.h"

@interface MyClass : NSObject
{
   OtherClass* someOtherClass;
}
@end

@classステートメントを使用すると、ヘッダーのインポートをスキップできます。

@class OtherClass;

@interface MyClass : NSObject
{
   OtherClass* someOtherClass;
}
@end

@classを使用する場合は、実装ファイルに「OtherClass.h」を#importする必要があります。

// Still need to import, but now any class importing MyClass.h 
// does not automatically know about OtherClass as well.

#import "OtherClass.h"

@implementation MyClass
…
@end

3番目のクラスの別の場所で#import"MyClass.h"を実行すると、@ class OtherClassを使用した場合、その3番目のクラスにはOtherClassクラスのヘッダーが自動的に含まれません。MyClassヘッダー内。したがって、3番目のクラスは、OtherClass.hヘッダーを明示的にインポートしない限り、OtherClassの知識を持っていません。これは、実装の詳細(つまり、OtherClass)を開発者から隠す必要があるパブリックAPIを作成するときに役立ちます。

前方宣言は(ワークフローがわずかに変更されている以外に欠点がないという理由だけで)グッドプラクティスと見なされ、クラスのヘッダーを別のヘッダーファイルにインポートするよりも望ましい方法です。これは確かにフィリップが述べたように周期的な輸入を防ぐのに役立ちます。

Xcodeについてはわかりませんが、Visual Studio(C ++)では、クラス転送は、数百のクラスを含む大規模なプロジェクトでのコンパイルを高速化するのにも役立ちました。これは、VSC++コンパイラがヘッダーの依存関係の解決にかなりの時間を費やしたためです。

于 2013-01-05T15:38:12.240 に答える